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?
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
这道题目主要考察inorder traverse, 题目很简单,但是也要考虑traverse 和iterative 的方法。其中iterative 的方法参考了http://jelices.blogspot.com/2014/06/leetcode-python-binary-tree-inorder.html
首先是traversal
# 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 inorder(self,root,solution):
if root:
self.inorder(root.left,solution)
solution.append(root.val)
self.inorder(root.right,solution)
def inorderTraversal(self, root):
solution=[]
self.inorder(root,solution)
return solution
iterative 的方法
# 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 inorderTraversal(self, root):
stack=[]
solution=[]
node=root
while node or len(stack)>0:
if node!=None:
stack.append(node)
node=node.left
else:
node=stack.pop()
solution.append(node.val)
node=node.right
return solution