JS-树:二叉树中序遍历


文章目录


前言

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


一、中序遍历-递归

1、左中右

2、如下输入是:4 2 5 1 6 3 7

javascript 复制代码
  // 前序遍历
  const tree = {
    val: '1',
    left: {
      val: '2',
      left: { val: '4', left: null, right: null },
      right: { val: '5', left: null, right: null },
    },
    right: {
      val: '3',
      left: { val: '6', left: null, right: null },
      right: { val: '7', left: null, right: null },
    },
  }
	
  // 前序遍历
console.log(fun1(tree))

function fun1(root: any) {
  const arr: any[] = []
  const fun = (node: any) => {
    if (!node)
      return
    fun(node.left)
    arr.push(node.val)
    fun(node.right)
  }
  fun(root)
  return arr
}

二、中序遍历-队列

1、左中右

2、如下输入是:4 2 5 1 6 3 7

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

总结

这就是树的二叉树中序遍历,希望能帮助到你!

相关推荐
落日漫游3 分钟前
Zabbix监控实战:Linux主机全流程配置
运维·开发语言·自动化
带娃的IT创业者4 分钟前
Python 异步编程完全指南(二):深入 asyncio 核心概念
开发语言·python·协程·事件循环·asyncio·异步编程
CAACoder4 分钟前
CATIA/3DE CAA二次开发-ScrollWindow滚动窗口
开发语言·c++·mfc·滚动窗口
还是大剑师兰特4 分钟前
Vue3 页面权限控制实战示例(路由守卫 + 权限判断)
开发语言·前端·javascript
老前端的功夫8 分钟前
【Java从入门到入土】06:String的72变:从字符串拼接到底层优化
java·开发语言
程序猿(雷霆之王)10 分钟前
C++——AI大模型接入SDK
开发语言·c++
会编程的土豆19 分钟前
【从零学javase 第六天】网络编程(+多线程)
开发语言·网络·php
Yupureki25 分钟前
《C++实战项目-高并发内存池》8. 最终性能优化与测试
c语言·开发语言·数据结构·c++·算法·性能优化
隔壁小邓26 分钟前
在Java中实现优雅的CQRS架构
java·开发语言·架构
跟着珅聪学java27 分钟前
Vue 2 + CommonJS 写法开发教程
前端·javascript·vue.js