输入二叉树的先序遍历,构建二叉树
时间: 2023-11-14 12:12:31 浏览: 58
二叉树的几种操作,包括递归先序建立二叉树、先序遍历、中序遍历、后序遍历、非递归的各种遍历
5星 · 资源好评率100%
可以按照以下步骤构建二叉树:
1. 建立一个栈,用于存储节点。
2. 从先序遍历中取出第一个数,作为根节点,并将其入栈。
3. 遍历先序遍历中的剩余数字,对于每一个数字:
- 如果该数字小于栈顶节点的值,将该数字作为栈顶节点的左子节点,并将其入栈。
- 如果该数字大于栈顶节点的值,将该数字作为栈顶节点的右子节点,并将其入栈。
- 如果该数字既不大于栈顶节点的值,也不小于栈顶节点的值,说明该数字不属于该子树,需要向上回溯,直到找到一个节点,该节点的值大于该数字,则将该数字作为该节点的右子节点,并将其入栈。
4. 完成遍历后,返回根节点即可。
以下是一段 Python 代码实现:
```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 = TreeNode(preorder[0])
stack = [root]
for val in preorder[1:]:
node = TreeNode(val)
if val < stack[-1].val:
stack[-1].left = node
else:
while stack and val > stack[-1].val:
parent = stack.pop()
parent.right = node
stack.append(node)
return root
```
其中,TreeNode 是二叉树的节点类,buildTree 函数接受先序遍历作为参数,并返回构建出的二叉树的根节点。
阅读全文