完成二叉树先序遍历的非递归算法的代码
时间: 2023-12-03 09:03:56 浏览: 85
二叉树先序遍历的非递归算法具体实现
5星 · 资源好评率100%
以下是二叉树先序遍历的非递归算法的代码,使用栈来辅助实现:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def preorderTraversal(root: TreeNode) -> List[int]:
if not root:
return []
stack = [root]
res = []
while stack:
node = stack.pop()
res.append(node.val)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
return res
```
其中,stack 是用来存储待遍历的节点的栈,res 是用来存储遍历结果的列表。先将根节点入栈,然后不断地从栈中弹出节点并访问它,如果该节点有右子节点,则将右子节点入栈,如果该节点有左子节点,则将左子节点入栈。这样就可以保证先访问左子节点,再访问右子节点,最后访问根节点,从而实现先序遍历。
阅读全文