leetcode 144. 二叉树的前序遍历(中等)
给定一个二叉树,返回它的 前序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,2,3]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
步骤
递归方法很简单:
class Solution(object):
# recursively
def preorderTraversal(self, root):
def DFS(node):
if node:
ans.append(node.val)
DFS(node.left)
DFS(node.right)
ans = []
DFS(root)
return ans
迭代方法模板和各种遍历方法的解法都可以参考图解 二叉树的四种遍历,这里都是用python写的。
class Solution(object):
# recursively
def preorderTraversal(self, root):
if not root:return []
cur,stack,res=root,[],[]
while cur or stack:
while cur:
res.append(cur.val)
stack.append(cur)
cur=cur.left
tmp=stack.pop()
cur=tmp.right
return res
我发现自己对各种迭代方式的解法都十分陌生,还需要多看几遍。