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

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

题目


给定一个二叉树的根节点 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
};
相关文章
|
1月前
|
存储 算法
【数据结构与算法】二叉树基础OJ--下(巩固提高)
【数据结构与算法】二叉树基础OJ--下(巩固提高)
|
1月前
|
算法 前端开发 数据可视化
数据结构与算法在前端开发中的实际应用
本文将探讨数据结构与算法在前端开发中的实际应用,重点介绍在处理大规模数据、优化性能和提升用户体验方面的具体场景和解决方案。
|
1月前
|
算法 Java
算法:Java计算二叉树从根节点到叶子结点的最大路径和
算法:Java计算二叉树从根节点到叶子结点的最大路径和
|
26天前
|
算法
【算法与数据结构】二叉树(前中后)序遍历2
【算法与数据结构】二叉树(前中后)序遍历
|
12天前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
|
14天前
|
算法 前端开发
前端算法 岛屿的最大面积 DFS(深度优先搜索)
前端算法 岛屿的最大面积 DFS(深度优先搜索)
11 0
|
23天前
|
算法 索引
【算法与数据结构】深入二叉树实现超详解(全源码优化)
【算法与数据结构】深入二叉树实现超详解(全源码优化)
|
23天前
|
存储 算法
【算法与数据结构】深入解析二叉树(二)之堆结构实现
【算法与数据结构】深入解析二叉树(二)之堆结构实现
|
1月前
|
存储 算法 Python
数据结构与算法——二叉树介绍(附代码)
数据结构与算法——二叉树介绍(附代码)
22 3
|
1月前
|
存储 算法
【数据结构与算法】二叉树基础OJ -- 上 (巩固提高)-2
【数据结构与算法】二叉树基础OJ -- 上 (巩固提高)-2