Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3}
,
1 \ 2 / 3
return [1,3,2]
.
Note: Recursive solution is trivial, could you do it iteratively?
树的中序遍历~ 先来个递归解法~
class Solution:
# @param root, a tree node
# @return a list of integers
def inorderTraversal(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.helper(root.left)
self.res.append(root.val)
self.helper(root.right)
非递归解法如下~
class Solution:
# @param root, a tree node
# @return a list of integers
def inorderTraversal(self, root):
if root is None: return []
stack = []; res = []
while stack or root != None:
if root != None:
stack.append(root)
root = root.left
else:
root = stack.pop()
res.append(root.val)
root = root.right
return res
还有一种非递归解法,是用常数空间,叫Morris Traversal~可以参考一下这篇文章:http://www.cnblogs.com/AnnieKim/archive/2013/06/15/MorrisTraversal.html
找时间再好好看看好了~