1.设计实现二叉树类,要求: (1)编写一个程序,首先建立不带头结点的二叉链式存储结构的二叉树,然后分别输出按照前序遍历二叉树、中序遍历二叉树和后序遍历二叉树访问各结点的序列信息,最后再测试查找函数和撤销函数的正确性。 (2)实现二叉树层次遍历的非递归算法。
时间: 2024-12-01 08:10:15 浏览: 4
JAVA 实现二叉树(链式存储结构)
在Python中,我们可以创建一个简单的二叉树类,包括节点、插入、删除、前序遍历、中序遍历、后序遍历以及层次遍历等功能。这里是一个基础的实现:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class BinaryTree:
def __init__(self):
self.root = None
# 插入节点
def insert(self, val):
if not self.root:
self.root = TreeNode(val)
else:
self._insert_recursive(self.root, val)
def _insert_recursive(self, node, val):
if val < node.val:
if node.left is None:
node.left = TreeNode(val)
else:
self._insert_recursive(node.left, val)
else:
if node.right is None:
node.right = TreeNode(val)
else:
self._insert_recursive(node.right, val)
# 前序遍历
def pre_order_traversal(self, node):
if node is not None:
print(node.val, end=" ")
self.pre_order_traversal(node.left)
self.pre_order_traversal(node.right)
# 中序遍历
def in_order_traversal(self, node):
if node is not None:
self.in_order_traversal(node.left)
print(node.val, end=" ")
self.in_order_traversal(node.right)
# 后序遍历
def post_order_traversal(self, node):
if node is not None:
self.post_order_traversal(node.left)
self.post_order_traversal(node.right)
print(node.val, end=" ")
# 层次遍历
def level_order_traversal(self, node):
if node is None:
return
queue = [node]
while queue:
curr_node = queue.pop(0)
print(curr_node.val, end=" ")
if curr_node.left:
queue.append(curr_node.left)
if curr_node.right:
queue.append(curr_node.right)
# 测试
tree = BinaryTree()
tree.insert(5)
tree.insert(3)
tree.insert(7)
tree.insert(2)
tree.insert(4)
tree.insert(6)
tree.insert(8)
# 遍历
print("前序遍历:")
tree.pre_order_traversal(tree.root)
print("\n中序遍历:")
tree.in_order_traversal(tree.root)
print("\n后序遍历:")
tree.post_order_traversal(tree.root)
print("\n层次遍历:")
tree.level_order_traversal(tree.root)
# 查找和删除函数略,可以根据需要添加并验证其正确性
```
以上代码中,我们首先定义了二叉树的节点结构`TreeNode`,接着实现了二叉树类`BinaryTree`,包含了插入节点、各种遍历方法以及层次遍历。你可以通过实例化`BinaryTree`并进行操作来验证这些功能是否正常工作。对于查找和撤销函数,可以在此基础上进行扩展。
阅读全文