题目
给定一个二叉树的根节点root,返回它的中序遍历。
思路
递归实现很简单。
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass 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 = Noneclass Solution:def inorderTraversal(self, root: TreeNode) -> List[int]:# 左 根 右ans = []if root is None: return anss = [] # 定义一个显式栈stackwhile root is not None or len(s) != 0:while root is not None:s.append(root)root = root.leftroot = s.pop()ans.append(root.val)root = root.rightreturn ans
