二叉树的生成与遍历实验实验问题及解决
时间: 2023-10-07 11:14:12 浏览: 102
二叉树的生成可以通过多种方式实现,包括手动输入节点信息、读入文件等。在手动输入节点信息时,可以按照前序遍历的方式输入节点信息,当输入到空节点时使用特殊字符(如“#”或“null”)表示。
以下是一个手动输入节点信息生成二叉树的示例代码:
```python
class TreeNode:
def __init__(self, value):
self.val = value
self.left = None
self.right = None
def build_tree():
val = input('请输入节点的数值,空节点使用“#”表示:')
if val == '#':
return None
node = TreeNode(int(val))
node.left = build_tree()
node.right = build_tree()
return node
```
这个代码中,我们定义了一个 `TreeNode` 类表示二叉树的节点,然后定义了一个 `build_tree` 函数来递归地构建二叉树。在函数中,我们首先输入节点的数值,如果是空节点则返回 `None`,否则创建一个节点对象并递归构建其左右子树。
二叉树的遍历包括前序遍历、中序遍历和后序遍历。以下是三种遍历方式的示例代码:
```python
def preorder_traversal(root):
if root is None:
return
print(root.val, end=' ')
preorder_traversal(root.left)
preorder_traversal(root.right)
def inorder_traversal(root):
if root is None:
return
inorder_traversal(root.left)
print(root.val, end=' ')
inorder_traversal(root.right)
def postorder_traversal(root):
if root is None:
return
postorder_traversal(root.left)
postorder_traversal(root.right)
print(root.val, end=' ')
```
这些函数都接受一个二叉树的根节点作为参数,然后按照不同的顺序遍历二叉树并输出节点的数值。其中,前序遍历首先访问根节点,然后依次遍历左子树和右子树;中序遍历首先遍历左子树,然后访问根节点,最后遍历右子树;后序遍历则是先遍历左右子树,最后访问根节点。
阅读全文