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

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

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

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

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)

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

时小记,终有成。

相关推荐
YXXY3133 分钟前
模拟算法的介绍
算法
小小前端仔LC6 分钟前
第五篇:前端任务状态管理与实时反馈 (SSE 客户端篇)
前端
LIO24 分钟前
Axios Token 无感刷新机制:原理、实现与最佳实践
前端·axios
happymaker062625 分钟前
简单LRU的实现(基于LinkedHashMap)
算法·leetcode·lru
「已注销」33 分钟前
面试分享:二本靠7轮面试成功拿下大厂P6
前端·javascript·面试
Lee川35 分钟前
深入浅出:用 React 打造高性能懒加载无限滚动组件
前端·react.js
会编程的土豆36 分钟前
【数据结构与算法】空间复杂度从入门到面试:不仅会算,还要会解释
数据结构·c++·算法·面试·职场和发展
普通网友38 分钟前
《算法面试必刷:15 个高频 LeetCode 题(附代码)》
算法·leetcode·面试
_深海凉_40 分钟前
LeetCode热题100-搜索二维矩阵
算法·leetcode·矩阵
walking9571 小时前
重新学习前端之JavaScript
前端·vue.js·面试