题目翻译
Given a binary tree, return the preorder traversal of its nodes’ values.
给定一个二叉树,求它的前序遍历序列。
思路一
递归。
代码
class Solution:
def preorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
res = []
self.helper(root,res) #调用递归函数
return res
def helper(self,root,res):
if not root:
return
res.append(root.val)
self.helper(root.left,res)
self.helper(root.right,res)
思路二
开辟一个堆栈,用栈来模拟递归的过程。
class Solution:
def preorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
stack = []
result = []
while root or stack:
if not root:
root = stack.pop() #root不存在的,从stack中弹出一个数
result.append(root.val)
if root.right: #root.right存在时,将root.right存入堆栈
stack.append(root.right)
root = root.left #先遍历root.left
return result