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
}

总结

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

相关推荐
Vacant Seat8 分钟前
图论-实现Trie(前缀树)
java·开发语言·数据结构·图论
烛阴12 分钟前
秒懂 JSON:JavaScript JSON 方法详解,让你轻松驾驭数据交互!
前端·javascript
猪猪虾的业余生活17 分钟前
Qt 驾校考试系统项目实现
开发语言·qt
香菇滑稽之谈18 分钟前
责任链模式的C++实现示例
开发语言·c++·设计模式·责任链模式
拉不动的猪20 分钟前
刷刷题31(vue实际项目问题)
前端·javascript·面试
zeijiershuai22 分钟前
Ajax-入门、axios请求方式、async、await、Vue生命周期
前端·javascript·ajax
拉不动的猪35 分钟前
刷刷题30(vue3常规面试题)
前端·javascript·面试
风莫寻40 分钟前
【Troubleshot】Qt 长按按键 keyPressEvent keyReleaseEvent 自动重复问题
开发语言·qt
ZC·Shou40 分钟前
Rust 之一 基本环境搭建、各组件工具的文档、源码、配置
开发语言·rust·cargo·rustc·rustup·clippy·rustfmt
Hello.Reader41 分钟前
深入理解 Rust 中的模式匹配语法
开发语言·rust