题目描述:
给定一个二叉树,返回它的 前序 遍历。
知识点:
递归法与迭代法
其中递归法的代码实现前序遍历、中序遍历、后序遍历结构思路基本相同,这里采用迭代法来实现。
思路和代码:
python的list对象可作为栈来使用。
前序遍历:入栈前读取节点的值
当左子树访问完毕后,出栈访问右子树
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def preorderTraversal(self, root: TreeNode) -> List[int]:
if not root:
return
temp_stack = [] # 存储栈
res_list=[]
while root or temp_stack:
while root:
res_list.append(root.val) # 入栈时访问val
temp_stack.append(root)
root=root.left
root=temp_stack.pop()
root=root.right
return res_list