聊聊二叉树的前序遍历算法

二叉树顾名思义,一个根节点只会有两个分叉对应,下图所示:

前序遍历先去拿它的左节点,拿完之后再去拿它左节点相邻的右节点,如数据结构是这样

第一中不考虑性能的方式的话,可以使用递归的方式去给他遍历

javascript 复制代码
 function deepTree(data) {
        let arrayData = []
        let fun = (node) => {
            if (node) {
                arrayData.push(node.val)
                //遍历一下左子树
                fun(node.left)
                //遍历一下右子树
                fun(node.right)
            }

            fun(data)
            return arrayData
        }
    }
    deepTree(tree)

依次拿到值的 val;

第二种方式使用栈的形式遍历

javascript 复制代码
  function preorderTraversal(root) {
        if (!root) return []

        let array = []
        let stack = [root]

        while (stack.length) {
            // 出栈
            let o = stack.pop()
            array.push(o.val)

            o.right && stack.push(o.right)
            o.left && stack.push(o.left)
            // console.log('oooo', o);
        }
        console.log(array);
    }
    preorderTraversal(tree)

考虑性能的算法使用 栈形式遍历;

时小记,终有成。

相关推荐
半个落月15 分钟前
一个新手用 Bun + Axios 调通 DeepSeek API 的实践记录
javascript
不好听61316 分钟前
深入理解链表:线性数据结构的另一面
javascript·数据结构
x1387028595718 分钟前
c语言中srtlen(指针使用计算字符长度)、传值和传址调用
c语言·开发语言·算法·visual studio
林希_Rachel_傻希希20 分钟前
学React治好了我的焦虑症,1小时速通React 前20分钟。
前端·javascript·面试
小林ixn21 分钟前
从 Ajax 到异步编程:JSON 序列化、Event Loop 与 XHR 请求完全解析
javascript
海兰24 分钟前
【实用程序】电商销售分析仪表盘 — 从零搭建一个AI参与的全栈数据洞察系统
人工智能·学习·算法
Cache技术分享25 分钟前
435. Java 日期时间 API - Clock 灵活获取当前时间
前端·后端
zwenqiyu1 小时前
P5283 [十二省联考 2019] 异或粽子题解
c++·学习·算法
wayz111 小时前
Momentum:TSI(真实强度指数)技术指标详解
算法·金融·数据分析·量化交易·特征工程
万事大吉CC1 小时前
Python 笔试输入模板总结
python·算法