首页 > 其他分享 >js 实现二叉树前序遍历

js 实现二叉树前序遍历

时间:2022-08-29 13:57:27浏览次数:61  
标签:node 遍历 res 前序 js 二叉树 push stack

// 前序遍历:根左右
// 中序遍历:左中右
// 后序遍历:左右根
// 迭代
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;
};

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

标签:node,遍历,res,前序,js,二叉树,push,stack
From: https://www.cnblogs.com/beileixinqing/p/16635691.html

相关文章

  • 【三维地图】开发攻略 —— 详解“GeoJSON”技术和应用场景
    GeoJSON,一个用于存储地理信息的数据格式。GoeJSON对象可以表示几何、特征或特征集合,支持:点、线、面、多点、多线、多面和几何集合。在基于平面地图,三维地图中都需要用到的......
  • JS逆向实战3——AESCBC 模式解密
    爬取某省公共资源交易中心通过抓包数据可知这个data是我们所需要的数据,但是已经通过加密隐藏起来了分析首先这是个json文件,我们可以用请求参数一个一个搜但是由于我......
  • vue+elementUI+sortablejs --- el-table列表拖拽
    前言:最近很多需求都与拖拽有关,一般拖拽用的都是 vuedraggable 但是要是在el-table列表里面拖拽当用vuedraggable去包裹table列表包外层只能拖动整个列表包里面数......
  • C# webApi接受JSON格式参数
    [HttpPost]publicstringTestData(){try{//接收post传入的数据varrequest......
  • JS逆向实战2--cookie-AcwScV2加密—某招标信息网
    cookies的获取首先拿到第一次访问原链接拿到acw_tc的值,然后放到session中去再用这个session再次访问原链接拿到js加载的加密的真实数据。用了一些反混淆。最后获取这......
  • 重建二叉树
    题目链接:重建二叉树_牛客题霸_牛客网(nowcoder.com)根据前序遍历和中序遍历重建二叉树,返回根节点 importjava.util.*;/***Definitionforb......
  • vue项目mixin.js的使用及注意详解
     简单的介绍下mixin(混入):官方介绍:混入(mixin)提供了一种非常灵活的方式,来分发Vue组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有......
  • identity4 系列————纯js客户端案例篇[四]
    前言前面已经解释了两个案例了,通信原理其实已经很清楚了,那么纯js客户端是怎么处理的呢?正文直接贴例子哈。https://github.com/IdentityServer/IdentityServer4/tree/ma......
  • js 判断 数字数组 是否 连续
    预期[1,2,3,4,5]=>true[1,2,3,5,6]=>false代码//判断一串数字是否是连续的constisContinuityNum=(num:number[]|number)=>{letarray=[];if(num......
  • stream.sum List和json互转
    原文链接:https://blog.csdn.net/fighting_xuan/article/details/112609463https://blog.csdn.net/weixin_49186526/article/details/116098255//这两部分效果相同mo......