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.
分析: 如果iterative解的话,需要用一个stack,将所有节点按照left, root, right的顺序依次入栈。 如果当前root为空,或者没有left,right。则pop出栈一个,存入list,然后考察下一个节点right。直到stack为空,并且最后一个节点也为空,循环结束。
# 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 iterativeTraversal(self,root, list):
stack = []
while root or stack:
if root:
stack.append(root)
root = root.left
else :
root = stack.pop()
list.append(root.val)
root = root.right
return list
def inorderTraversal(self, root):
list = []
self.iterativeTraversal(root,list)
return list