js 实现二叉树前序遍历

2022-09-24 14:51:21 浏览数 (1)

代码语言:javascript复制
// 前序遍历:根左右
// 中序遍历:左根右
// 后序遍历:左右根
var preorderTraversal = function (root) {
    if (!root) {
        return null;
    }
    // 迭代
    let res = [];
    let stack = [root];
    while (stack.length > 0) {
        const node = stack.pop();
        res.push(node.val);
        // stack 是一个栈,用来存放节点,遍历的时候每次从最后面取出一个节点获取 val,先进后出,所以要先 push 右节点,
        node.right && stack.push(node.right);
        node.left && stack.push(node.left);
    }
    return res;
    // 递归
    // let res = [];
    // const preorder = (node, res) => {
    //     if (node) {
    //         res.push(node.val);
    //         前序遍历先左后右,所以先递归左节点
    //         preorder(node.left, res);
    //         preorder(node.right, res);
    //     }
    // };
    // preorder(root, res);
    // return res;
};

递归要比迭代更耗时一些。

0 人点赞