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
}

总结

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

相关推荐
苏打水com18 分钟前
第十二篇:Day34-36 前端工程化进阶——从“单人开发”到“团队协作”(对标职场“大型项目协作”需求)
前端·javascript·css·vue.js·html
海上彼尚29 分钟前
Go之路 - 4.go的集合[完整版]
开发语言·后端·golang
coding随想35 分钟前
JavaScript Notifications API:告别alert弹窗,开启沉浸式用户体验革命!
开发语言·javascript·ux
阿海57436 分钟前
卸载php的shell脚本
开发语言·php
钝挫力PROGRAMER40 分钟前
Vue中选项式和组合式API的学习
javascript·vue.js
码界奇点43 分钟前
基于Python与GitHub Actions的正方教务成绩自动推送系统设计与实现
开发语言·python·车载系统·自动化·毕业设计·github·源代码管理
3秒一个大44 分钟前
Vue 任务清单开发:数据驱动 vs 传统 DOM 操作
前端·javascript·vue.js
阿蒙Amon44 分钟前
JavaScript学习笔记:2.基础语法与数据类型
javascript·笔记·学习
an869500144 分钟前
vue自定义组件this.$emit(“refresh“);
前端·javascript·vue.js
Avicli1 小时前
Gemini3 生成的基于手势控制3D粒子圣诞树
前端·javascript·3d