树的前序遍历是指按照根节点 -> 左子树 -> 右子树的顺序访问树中的所有节点。下面是一种非递归的思路来实现树的前序遍历:
- 创建一个空的栈,用于存储待遍历的节点。
- 将根节点入栈。
- 循环执行以下步骤,直到栈为空:
- 弹出栈顶节点,并访问该节点。
- 若该节点有右子树,则将右子树入栈。
- 若该节点有左子树,则将左子树入栈。
通过上述步骤,可以实现树的前序遍历。具体的实现代码如下所示(以Python为例):
def preorderTraversal(root):
if not root:
return []
stack = []
result = []
stack.append(root)
while stack:
node = stack.pop()
result.append(node.val)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
return result
以上代码使用一个栈来实现前序遍历。首先将根节点入栈,然后循环弹出栈顶节点并访问该节点,同时将右子树和左子树按照顺序入栈。最后返回遍历结果即可。