代码语言:javascript复制
var inorderTraversal = function (root) {
// 迭代
if (!root) {
return [];
}
let res = [];
let stack = [];
while (stack.length > 0) {
// 循环遍历,将所有左节点push到栈中
while (root) {
stack.push(root);
root = root.left;
}
// 取出 stack 最后 push 进去的节点
const node = stack.pop();
// 返回该节点的值
res.push(node.val);
// 每次取值的时候,将当前节点的右节点 push 到栈中
root = node.right;
}
return res;
// 递归
// let res = [];
// const inorder = (node, res) => {
// if (!node) {
// return res;
// }
// inorder(node.left, res);
// res.push(node.val);
// inorder(node.right, res);
// };
// inorder(root, res);
// return res;
};