Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3}
,
1 \ 2 / 3
return [1,2,3]
.
Note: Recursive solution is trivial, could you do it iteratively?
树的前序遍历~递归解法如下~
class Solution:
# @param root, a tree node
# @return a list of integers
def preorderTraversal(self, root):
if root is None: return []
self.res = []
self.helper(root)
return self.res
def helper(self, root):
if root is None: return
self.res.append(root.val)
self.helper(root.left)
self.helper(root.right)
非递归解法如下~也是用stack来实现~
class Solution:
# @param root, a tree node
# @return a list of integers
def preorderTraversal(self, root):
if root is None: return []
stack = []; res = []
while stack or root != None:
if root != None:
res.append(root.val)
stack.append(root)
root = root.left
else:
root = stack.pop()
root = root.right
return res
同Binary Tree Inorder Traversal一样,还有一个非递归解法:Morris Traversal~以后找时间再看吧~