题目
给定一个二叉树的根节点root,返回它的中序遍历。
思路
递归实现很简单。
# 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 root is None:
return []
return self.inorderTraversal(root.left) + [root.val] + self.inorderTraversal(root.right)
迭代算法实现 重点重点
# 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]:
# 左 根 右
ans = []
if root is None: return ans
s = [] # 定义一个显式栈stack
while root is not None or len(s) != 0:
while root is not None:
s.append(root)
root = root.left
root = s.pop()
ans.append(root.val)
root = root.right
return ans