二叉树中序遍历(栈)

leetcode94
问题:
栈的方式实现二叉树

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution:
def middelTravel(self, r):
stack, ret = [], []
root = r
while stack or root:
if root:
stack.append(root)
root = root.left
else:
s = stack.pop()
ret.append(s.val)
root = s.right
return ret

关键点:
1.根节点先入栈,然后以左节点为根节点,直到左节点为空,将根节点出栈。 以右节点为根节点