给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,3,2]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
递归写法:Leetcode 75. 颜色分类(Python3)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
#递归
# if not root:return []
# return self.inorderTraversal(root.left) + [root.val] + self.inorderTraversal(root.right)
#队栈实现
res,stack = [],[]
while root or stack:
while root:
stack.append(root)
root = root.left
#当前结点不存在,则出栈栈顶元素
if stack:
t = stack.pop()
res.append(t.val)
#当前指针指向栈顶元素的右子树
root = t.right
return res