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
}

总结

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

相关推荐
疏狂难除6 分钟前
【Tauri2】050——加载html和rust爬虫
开发语言·爬虫·rust·spiderdemo
艾小码15 分钟前
2025年组件化开发这样做,效率提升300%
前端·javascript
Zhangzy@1 小时前
仓颉的空安全基石:Option类型的设计与实践
java·开发语言·安全
oioihoii1 小时前
Rust中WebSocket支持的实现
开发语言·websocket·rust
明道源码3 小时前
Kotlin Multiplatform 跨平台方案解析以及热门框架对比
开发语言·kotlin·cocoa
fie88893 小时前
C#实现连续语音转文字
开发语言·c#
一念&5 小时前
每日一个C语言知识:C 头文件
c语言·开发语言·算法
DARLING Zero two♡6 小时前
仓颉GC调优参数:垃圾回收的精密控制艺术
开发语言·仓颉
今日说"法"6 小时前
Rust探秘:所有权转移在函数调用中的表现
开发语言·后端·rust
java1234_小锋7 小时前
PyTorch2 Python深度学习 - 自动微分(Autograd)与梯度优化
开发语言·python·深度学习·pytorch2