链接:
https://leetcode-cn.com/problems/binary-tree-inorder-traversal/
题目:给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
1 \ 2 / 3
输出: [1,3,2]
我的解法1:递归
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def inorderTraversal(self, root):
if not root:
return []
return [] + self.inorderTraversal(root.left) + [root.val] + self.inorderTraversal(root.right)
我的解法2: 迭代 有一个stack,先找到最左边的结点,然后看这个结点有没有右结点,没有回到跟结点
def buildTree(self, root):
res, stack = [], []
while True:
while root:
stack.append(root)
root = root.left
if not stack:
return res
node = stack.pop()
res.append(node.val)
root = node.right