Leetcode二叉树探索专题链接:
二叉树
树的遍历中二叉树的前序遍历题目链接:
144. 二叉树的前序遍历
前序遍历的介绍
二叉树的前序遍历顺序为: 根节点 --> 左子树 --> 右子树
比如,给定一棵这样的二叉树:
前序遍历: A -> B -> C -> D -> E -> F -> G
回归题目,题目给了一个二叉树,让我们输出该二叉树前序遍历的节点并以一个列表的方式返回。
题解
解法1
利用递归求解:
class Solution:
def preorderTraversal(self, root: TreeNode) -> List[int]:
res = []
def dfs(root: TreeNode):
nonlocal res
if not root:
return None
res.append(root.val)
dfs(root.left)
dfs(root.right)
dfs(root)
return res
解法2
迭代求解:
class Solution:
def preorderTraversal(self, root: TreeNode) -> List[int]:
if not root: # root不存在,返回空列表
return []
res = []
stack = [root]
while stack:
cur = stack.pop()
if cur.right:
stack.append(cur.right)
if cur.left:
stack.append(cur.left) # 后append左子树,因为栈是后进先出,所以要先压左子树
res.append(cur.val)
return res