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
}

总结

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

相关推荐
昵称画5 分钟前
交接班记录电子化:三班之间的信息不漏
开发语言·数据库·人工智能·低代码·php
“AI国潮设计-小江”20 分钟前
【AIGC实战】Python+SDXL批量生成“潮汕英歌舞不倒翁”IP | 角色一致性与多场景融合方案,附完整代码
开发语言·人工智能·python·prompt·aigc
传奇开心果编程26 分钟前
【Rust入门练中学】第6课:结构体与方法
开发语言·rust·结构体·编程语言理论·结构体方法·编程通用语言
Linux_cy29 分钟前
服务器管理工具哪个好用?我用了七八个
运维·服务器·javascript·python·ssh·面板·gmssh
code tsunami1 小时前
【无标题】
开发语言·python
变与不变8061 小时前
jQuery细节以及使用应用场景
前端·javascript·jquery
CodeGL1 小时前
10、Python基础之进程和线程
开发语言·python
TechWayfarer2 小时前
PHP漏洞被利用,怎么揪出攻击IP?
开发语言·python·tcp/ip·网络安全·php
卡卡~~4 小时前
“101计划”核心课程实践教材《数据实验结构指导-C++语言版》题目集
开发语言·c++·学习·算法
qq_406981034 小时前
大白话rust系列09 函数调用两次有什么错?
开发语言·python·rust