给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,3,2]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
class Stack(object):
def __init__(self):
self.index=-1
self.arr=[]
def push(self,value):
self.arr.append(value)
self.index+=1
def isEmpty(self):
if self.index>=0:
return False
return True
def pop(self):
if self.isEmpty():
return
temp=self.arr[self.index]
self.arr.pop(-1)
self.index-=1
return temp
class Solution(object):
def inorderTraversal(self, root):
result = []
stack=Stack()
if not root:
return result
stack.push(root)
temp = root.left
while not stack.isEmpty() or temp:
while temp: #一直遍历当前节点的左子树 将他们全部压入栈
stack.push(temp)
temp=temp.left
temp=stack.pop()
result.append(temp.val)
temp=temp.right#对它的右子树进行同样操作
return result