前端算法- 二叉树的中序遍历

简介: 前端算法- 二叉树的中序遍历

题目


给定一个二叉树的根节点 root ,返回它的中序遍历。

输入: root = [1,null,2,3]
输出: [1,3,2]


题解


这里采用递归的方式进行实现,我们先声明一个res变量,用于存储最后结果默认是空数组,然后在声明一个iteration函数用于递归操作,接受一个r的入参,进入iteration函数后,我们先判断当前出参r是否存在,如果不存在则直接返回,如果存在则将出参r的左节点传给自身进行调用,然后在将当前出参rval属性通过push方法追加到res变量中,然后在将出参r的右节点传给自身进行调用,然后我们在递归函数的外部将当前出参root传递进去,最后待递归函数执行完后将res变量返回即可

/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var inorderTraversal = function(root) {
  let res = []
  let iteration = (r) => {
    if (!r) return
    iteration(r.left)
    res.push(r.val)
    iteration(r.right)
  }
  iteration(root)
  return res
};

这里通过遍历的方式进行实现,我们先声明一个list数组,用于存放中序遍历顺序,在声明一个stack数组,用于控制任务堆栈,模拟递归,在声明一个cur变量指向的是出参root,然后使用循环,循环的条件为当前cur变量或者stack数组数据不为空则进行循环,在循环中我们先判断当前cur变量是否不为空,不为空则使用push方法将cur变量追加到stack数组中,在将出参root左节点赋值给cur变量,如果为空,则使用pop方法获取stack数组的末尾值并赋值给cur变量,在将当前cur变量的val属性通过push方法追加到list数组中,然后在将当前cur变量的右节点赋值给cur变量,当循环完成后,我们直接将list数组返回出去

var inorderTraversal = function(root) {
  let list = [] 
  let stack = [] 
  let cur = root 
  while(cur || stack.length) {
    if (cur) {
      stack.push(cur)
      cur = cur.left 
    } else {
      cur = stack.pop()
      list.push(cur.val)
      cur = cur.right 
    }
  }
  return list
};
相关文章
|
4天前
|
存储 算法 测试技术
【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】
本任务旨在实现二叉树的遍历,包括先序、中序、后序和层次遍历。首先介绍了二叉树的基本概念与结构定义,并通过C++代码示例展示了如何定义二叉树节点及构建二叉树。接着详细讲解了四种遍历方法的递归实现逻辑,以及层次遍历中队列的应用。最后提供了测试用例和预期输出,确保代码正确性。通过这些内容,帮助读者理解并掌握二叉树遍历的核心思想与实现技巧。
21 2
|
19天前
|
存储 算法 Python
文件管理系统中基于 Python 语言的二叉树查找算法探秘
在数字化时代,文件管理系统至关重要。本文探讨了二叉树查找算法在文件管理中的应用,并通过Python代码展示了其实现过程。二叉树是一种非线性数据结构,每个节点最多有两个子节点。通过文件名的字典序构建和查找二叉树,能高效地管理和检索文件。相较于顺序查找,二叉树查找每次比较可排除一半子树,极大提升了查找效率,尤其适用于海量文件管理。Python代码示例包括定义节点类、插入和查找函数,展示了如何快速定位目标文件。二叉树查找算法为文件管理系统的优化提供了有效途径。
47 5
|
26天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
81 3
|
2月前
|
算法
分享一些提高二叉树遍历算法效率的代码示例
这只是简单的示例代码,实际应用中可能还需要根据具体需求进行更多的优化和处理。你可以根据自己的需求对代码进行修改和扩展。
|
2月前
|
存储 缓存 算法
如何提高二叉树遍历算法的效率?
选择合适的遍历算法,如按层次遍历树时使用广度优先搜索(BFS),中序遍历二叉搜索树以获得有序序列。优化数据结构,如使用线索二叉树减少空指针判断,自定义节点类增加辅助信息。利用递归与非递归的特点,避免栈溢出问题。多线程并行遍历提高速度,注意线程安全。缓存中间结果,避免重复计算。预先计算并存储信息,提高遍历效率。综合运用这些方法,提高二叉树遍历算法的效率。
71 5
|
2月前
|
算法
树的遍历算法有哪些?
不同的遍历算法适用于不同的应用场景。深度优先搜索常用于搜索、路径查找等问题;广度优先搜索则在图的最短路径、层次相关的问题中较为常用;而二叉搜索树的遍历在数据排序、查找等方面有重要应用。
45 2
|
2月前
|
机器学习/深度学习 JSON 算法
二叉树遍历算法的应用场景有哪些?
【10月更文挑战第29天】二叉树遍历算法作为一种基础而重要的算法,在许多领域都有着不可或缺的应用,它为解决各种复杂的问题提供了有效的手段和思路。随着计算机科学的不断发展,二叉树遍历算法也在不断地被优化和扩展,以适应新的应用场景和需求。
63 0
|
3月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
36 1
|
3月前
|
存储 算法 关系型数据库
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
这篇文章主要介绍了多路查找树的基本概念,包括二叉树的局限性、多叉树的优化、B树及其变体(如2-3树、B+树、B*树)的特点和应用,旨在帮助读者理解这些数据结构在文件系统和数据库系统中的重要性和效率。
37 0
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
|
3月前
|
存储 算法 搜索推荐
数据结构与算法学习十七:顺序储存二叉树、线索化二叉树
这篇文章主要介绍了顺序存储二叉树和线索化二叉树的概念、特点、实现方式以及应用场景。
47 0
数据结构与算法学习十七:顺序储存二叉树、线索化二叉树