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
}

总结

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

相关推荐
论迹复利2 小时前
FreeRTOS 在 RISC-V 上是如何“点火“的 —— 从 main() 到第一个任务的完整链路
java·开发语言·risc-v
circuitsosk3 小时前
任务规划器的三种范式对比:ReAct、Plan-and-Execute 与 Tree-of-Thought 在真实业务中的取舍
前端·javascript·python·react.js·llm·ai agent
张宇Joaquin3 小时前
鲲鹏统一并行加速库KUPL--众核并行能力介绍
java·开发语言·网络
736c3 小时前
C语言-数组 07
c语言·开发语言
宸津-代码粉碎机3 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
小磊哥er4 小时前
深入解构Claude Code - 第 12 篇 · 整体串起来
javascript·ai编程
小磊哥er4 小时前
深入解构Claude Code - 第 11 篇 · 工程上的讲究
javascript·ai编程
LorryJovens5 小时前
【LAAP科研】CEN因果等价网络理论---从双缝干涉到因果等价
开发语言·php
Brilliantwxx6 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
卢锡荣7 小时前
国产PD3.1全集成Type-C管控芯片LDR6020P
c语言·开发语言