给定一个二叉树的根节点 root,返回它的 中序 遍历。
示例 1:
输入:root = [1,null,2,3]
输出:[1,3,2]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
提示:
- 树中节点数目在范围 [0, 100] 内
- -100 <= Node.val <= 100
解析
方法 1:递归
1 2 3 4 5 6 7 8 9 10 11
| var inorderTraversal = function (root) { const result = []; function dfs(node) { if (!node) return; dfs(node.left); result.push(node.val); dfs(node.right); } dfs(root); return result; };
|
方法 2:迭代(用栈模拟递归)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| var inorderTraversal = function (root) { const result = []; const stack = []; let curr = root;
while (curr || stack.length) { while (curr) { stack.push(curr); curr = curr.left; } curr = stack.pop(); result.push(curr.val); curr = curr.right; } return result; };
|
中序遍历:左 → 根 → 右。迭代法使用栈模拟递归过程,先一路向左压栈,弹出后访问节点值,再转向右子树。