如何用先序遍历建立二叉树数据结构
时间: 2024-03-13 18:38:53 浏览: 72
先序遍历二叉树的算法
以下是使用先序遍历建立二叉树的Python代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def buildTree(self, preorder: List[int]) -> TreeNode:
if not preorder:
return None
root = TreeNode(preorder[0])
stack = [root]
for i in range(1, len(preorder)):
if preorder[i] < stack[-1].val:
stack[-1].left = TreeNode(preorder[i])
stack.append(stack[-1].left)
else:
while stack and preorder[i] > stack[-1].val:
last = stack.pop()
last.right = TreeNode(preorder[i])
stack.append(last.right)
return root
```
其中,TreeNode类表示二叉树的节点,buildTree函数接收一个先序遍历的列表,返回一个二叉树的根节点。具体实现过程如下:
1. 如果先序遍历列表为空,则返回None。
2. 创建根节点,将其入栈。
3. 从第二个元素开始遍历先序遍历列表,如果当前元素小于栈顶元素的值,则将其作为栈顶元素的左子节点,并将其入栈。
4. 如果当前元素大于栈顶元素的值,则不断弹出栈顶元素,直到栈为空或者当前元素小于栈顶元素的值。将当前元素作为最后一个弹出的节点的右子节点,并将其入栈。
5. 遍历完先序遍历列表后,返回根节点。
阅读全文