JS-树:二叉树前序遍历(先序遍历)


文章目录


前言

最近总结一下树的算法,研究树相关的知识。


一、前序遍历-递归

1、从根出发,然后左边然后右边

2、如下输入是:a b d e c f g

javascript 复制代码
  // 前序遍历
  const tree = {
    val: 'a',
    left: {
      val: 'b',
      left: { val: 'd', left: null, right: null },
      right: { val: 'e', left: null, right: null },
    },
    right: {
      val: 'c',
      left: { val: 'f', left: null, right: null },
      right: { val: 'g', left: null, right: null },
    },
  }
	
  // 前序遍历
console.log(fun1(tree))

function fun1(root: any) {
  const arr: any[] = []

  const fun = (node: any) => {
    if (node) {
      arr.push(node.val)
      fun(node.left)
      fun(node.right)
    }
  }

  fun(root)

  return arr
}

二、前序遍历-队列

1、从根出发,然后左边然后右边

2、如下输入是:a b d e c f g

javascript 复制代码
function fun2(root: any) {
  const arr: any[] = []
  const stack = [root]
  while (stack.length > 0) {
    const o = stack.pop()
    arr.push(o.val)
    o.right && stack.push(o.right)
    o.left && stack.push(o.left)
  }
  return arr
}

总结

这就是树的二叉树前序遍历(先序遍历),希望能帮助到你!

相关推荐
m0_720245015 分钟前
1543.统计好三元组(简单)
开发语言·算法
To_OC28 分钟前
LC 560 和为 K 的子数组:前缀和配哈希表,这对组合我是真的服了
javascript·算法·程序员
叠层归一研究院1 小时前
AGI 系统(八):符号范畴嵌入函子 — SymCat ↪ C_M107 严格化
c语言·开发语言·人工智能·算法·transformer·agi
明朝百晓生2 小时前
Deep RL learning[2026/8]
开发语言·javascript·人工智能
用户938515635072 小时前
ESLint 代码规范完全指南——从 AST 原理到 flat config 逐行解析
javascript·后端·代码规范
weixin-a153003083162 小时前
python-装饰器
开发语言·python
我的xiaodoujiao3 小时前
快速学习Python基础知识详细图文教程17--类型注解和断点调试
开发语言·python·学习·测试工具
kyriewen4 小时前
今年裁了16万技术人——但字节前端岗反而涨了23%
前端·javascript·面试
leoZ2315 小时前
AI 辅助开发的五道坎
开发语言·人工智能·视觉检测·bert·php·超分辨率重建·openvino
程序员老陆5 小时前
Qt的QThread::usleep和FFmpeg的libavutil模块的av_usleep哪个精度高一些?
开发语言·qt·ffmpeg·音视频