前序遍历的顺序(头左右)
const preOrderTraversal = function (root) {
let res = [];
const preOrder = (root) => {
if (root === null) {
return;
}
// 首先把头部节点添加进去
res.push(root.val);
// 然后这时候进入遍历节点的左节点
// 不断调用 res.push 把左节点添加进去
preorder(root.left);
// 知道没有左节点了,触发了 if (root === null) 的判定规则,返回
// 然后开始遍历右节点
preorder(root.right);
};
preOrder(root);
return res;
}
不适用递归的方式
const preorderTraversal = function (root) {
if (root.val !== null) {
let res = [];
res.push(root.val);
while (res.length) {
root = res.pop();
if (root.right !== null) {
res.push(root.right);
}
if (root.left !== null) {
res.push(root.left);
}
}
}
}