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?
分析:个人感觉,这里面主要应用到的就是一个堆栈的先进先出的思想,作为pre-order的顺序。 Preorder的顺序是,先root, 后left,再right. 另外post-order, left >> right >> root. In-order的顺序是left >> root >> right ! 明白这些,思路就比较简单。
Python代码:
# Definition for a binary tree node
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# @param root, a tree node
# @return a list of integers
def preorderTraversal(self, root):
myroot = []
returnlist = []
if not root:
return returnlist
myroot.append(root)
while(myroot):
temp = myroot.pop()
returnlist.append(temp.val)
if temp.right:
myroot.append(temp.right)
if temp.left:
myroot.append(temp.left)
return returnlist