利用先序遍历创建二叉树
时间: 2023-11-11 13:02:32 浏览: 136
先序遍历创建二叉树的方法如下:
1. 读入根节点的值,创建根节点;
2. 如果剩余的字符不为空,则读入下一个字符;
3. 如果下一个字符是字符“#”,则返回上一层;
4. 如果下一个字符不是字符“#”,则创建一个新节点,并将该节点链接到当前节点的左子树上;
5. 递归执行步骤2 - 步骤4,创建当前节点的左子树;
6. 递归执行步骤2 - 步骤4,创建当前节点的右子树。
例如,假设我们要创建二叉树:
```
1
/ \
2 3
/ / \
4 5 6
```
其先序遍历结果为:1 2 4 # # # 3 5 # # 6 # #。
按照上述方法,我们可以在程序中实现先序遍历创建二叉树的过程。代码如下:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def buildTree(preorder):
if not preorder:
return None
root_val = preorder.pop(0)
if root_val == "#":
return None
root = TreeNode(int(root_val))
root.left = buildTree(preorder)
root.right = buildTree(preorder)
return root
preorder = ["1", "2", "4", "#", "#", "#", "3", "5", "#", "#", "6", "#", "#"]
root = buildTree(preorder)
```
在这个例子中,我们首先读入根节点的值“1”,创建根节点。然后,我们读入下一个字符“2”,并创建一个新节点,将该节点链接到根节点的左子树上。接着,我们读入下一个字符“4”,发现该字符为“#”,表示当前节点的左子树为空,因此返回上一层。接下来,我们回到节点2,读入下一个字符“#”,表示节点2的右子树为空,返回上一层。最后,我们回到根节点,读入下一个字符“3”,并创建一个新节点,将该节点链接到根节点的右子树上。依此类推,直到创建完整棵二叉树。
阅读全文