非递归先序遍历构建二叉树
时间: 2023-11-21 18:06:17 浏览: 82
非递归先序遍历构建二叉树的过程如下:
1. 创建一个空栈,将根节点入栈。
2. 当栈不为空时,取出栈顶元素作为当前节点,并将其弹出栈。
3. 如果当前节点的右子树不为空,将其右子树入栈。
4. 如果当前节点的左子树不为空,将其左子树入栈。
5. 重复步骤2-4,直到栈为空。
下面是一个示例代码,其中假设二叉树的节点值为整数类型:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def buildTree(preorder):
if not preorder:
return None
root = TreeNode(preorder[0])
stack = [root]
for i in range(1, len(preorder)):
node = TreeNode(preorder[i])
if node.val < stack[-1].val:
stack[-1].left = node
stack.append(node)
else:
while stack and node.val > stack[-1].val:
last = stack.pop()
last.right = node
stack.append(node)
return root
```
阅读全文