二叉树采用二叉链表存储,试写出对二叉树的先序遍历非递归算法
时间: 2023-11-14 19:20:17 浏览: 113
二叉树的先序遍历非递归算法需要借助栈来实现,具体步骤如下:
1. 首先将根节点入栈。
2. 循环执行以下操作,直到栈为空:
a. 弹出栈顶元素,并访问它的值。
b. 如果该节点有右子树,将其右子树入栈。
c. 如果该节点有左子树,将其左子树入栈。
下面是该算法的Python代码实现:
```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
```
其中,TreeNode是二叉树节点的定义,preorderTraversal函数接受一个根节点,返回该二叉树的先序遍历结果。
阅读全文