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
}

总结

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

相关推荐
为美好的生活献上中指21 分钟前
java每日精进 5.18【文件存储】
java·开发语言·minio·七牛云存储·s3·七牛云
winfredzhang1 小时前
使用Python和Selenium打造一个全网页截图工具
开发语言·python·selenium
mahuifa1 小时前
(10)python开发经验
开发语言·python
阿珊和她的猫1 小时前
Vue Router中的路由嵌套:主子路由
前端·javascript·vue.js
_龙小鱼_2 小时前
Kotlin扩展简化Android动画开发
android·开发语言·kotlin
霸王蟹2 小时前
React 19中如何向Vue那样自定义状态和方法暴露给父组件。
前端·javascript·学习·react.js·typescript
小伍_Five2 小时前
spark数据处理练习题详解【上】
java·开发语言·spark·scala
mascon2 小时前
C#自定义扩展方法 及 EventHandler<TEventArgs> 委托
开发语言·c#
shenyan~2 小时前
关于 js:9. Node.js 后端相关
前端·javascript·node.js
Evand J3 小时前
【MATLAB例程】线性卡尔曼滤波的程序,三维状态量和观测量,较为简单,可用于理解多维KF,附代码下载链接
开发语言·matlab