94.二叉树的中序遍历

二叉树的中序遍历

给定一个二叉树的根节点 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;
};

中序遍历:左 → 根 → 右。迭代法使用栈模拟递归过程,先一路向左压栈,弹出后访问节点值,再转向右子树。


94.二叉树的中序遍历
https://leetcode.lz5z.com/94.binary-tree-inorder-traversal/
作者
tickli
发布于
2024年1月26日
许可协议