js 实现二叉树前序遍历

递归要比迭代更耗时一些。
// 前序遍历:根左右
// 中序遍历:左根右
// 后序遍历:左右根
var preorderTraversal = function (root) {
    if (!root) {
        return [];
    }
    // 迭代
    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;
   //  递归 2
    // let res = [];
     // function preorderTraversalFn(node){
     //     res.push(node.val)
     //     node.left &&  preorderTraversalFn(node.left);
     //     node.right &&  preorderTraversalFn(node.right);
     // }
     // preorderTraversalFn(root)
     // return res;

};

前序遍历是从顶部向下遍历,先遍历一整颗树之后,再遍历另外的树。

 

posted @ 2022-08-29 13:44  蓓蕾心晴  阅读(140)  评论(0编辑  收藏  举报