题目描述 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 思路 通过递归很容易实现: class Solution: def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]: l = [] def dfs(node): if not node: return dfs(node.left) l.append(node.val) dfs(node.right) dfs(root) return l 如果要使用迭代实现的话,需要借助栈完成,简单来说,我们自己维护一个栈,从根节点开始处理左侧结点,在遇到叶子时停止,弹出栈中的值并放入列表中,再处理右边的结点。循环逻辑是判断栈和当前节点是否为空: 最终代码 class Solution: def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]: stack = [] node = root ret = [] while stack or node: while node: stack.append(node) node = node.left node = stack.pop() ret.append(node.val) node = node.right return ret 想得太多