一道算法题-二叉树的中序遍历

news/2024/7/20 21:55:20 标签: 算法, 深度优先, 动态规划

最近项目比较紧,忙了将近半个月,再加上现在看的书,比较难整理出技术文章。趁着过年,重新梳理一下2022年的规划,把节奏调整正常。但立的每周完成一道算法题的flag还是要实现的。

二叉树中序遍历,如果用递归来做的话,有水题的嫌疑。不过好久没做过二叉树的题目了,用来练练手也是可以的。

二叉树的中序遍历

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

示例 1:

图片

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

输入:root = [] 输出:[] 示例 3:

输入:root = [1] 输出:[1] 示例 4:

图片

输入:root = [1,2] 输出:[2,1] 示例 5:

图片

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

提示:

树中节点数目在范围 [0, 100] 内 -100 <= Node.val <= 100

解题思路

代码位置: https://github.com/shidawuhen/asap/blob/master/controller/algorithm/94-binary-tree-inorder-traversal.go

解这道题的前提是知晓中序遍历是一种怎样的遍历模式。通过下图可以看出,中序遍历需要先遍历到最左侧节点,然后访问其父节点,然后访问该父节点的右子节点的最左侧节点,如此形成一个循环模式。

图片

代码


按照该模式实现代码:

var nodeValue []int

func inorderTraversal(root *TreeNode) []int {
  nodeValue = make([]int, 0)
  if root == nil {
    return nodeValue
  }
  dsp(root)
  return nodeValue
}

func dsp(r *TreeNode) {
  //访问到最左侧节点
  if r.Left != nil {
    dsp(r.Left)
  }
  //访问其父节点
  nodeValue = append(nodeValue, r.Val)
  //访问父节点的右子节点。右子节点开始dsp后,会找到该节点的最左侧节点,进入循环。
  if r.Right != nil {
    dsp(r.Right)
  }
}

本来以为这个代码手到擒来,没想到忘了判断root是否为nil,提交的时候出现panic错误。所以说,再简单的题目,也应该细心的应对。


http://www.niftyadmin.cn/n/1616605.html

相关文章

QQ慧眼:企鹅企鹅你擦亮眼

5月中旬&#xff0c;网易有道词典iPhone新版推出摄像头查词功能后&#xff0c;雷锋网曾收到过网友发来的试用截图&#xff0c;其查词的准确性实在让人不敢恭维。没想到&#xff0c;四个月后&#xff0c;国内互联网巨头腾讯不避嫌疑&#xff0c;颇为高调地推出了一款名为QQ慧眼的…

一道算法题-三数之和

这道题蛮有意思的&#xff0c;本以为需要很多奇特的思路&#xff0c;结果按照自己的思路写了一下代码&#xff0c;简单的优化一下&#xff0c;最终通过了。所以说&#xff0c;很多时候就是干&#xff0c;然后就有结果了。 三数之和 给你一个包含 n 个整数的数组 nums&#xf…

专访Instagram的CEO——Kevin Systrom

众所周知&#xff0c;iOS上最受欢迎的社会化照片分享应用之一定会有Instagram。Instagram的创始人Kevin来自于创建Twitter公司的前身Odeo&#xff0c;更多的Twitter的理念流淌于Instagram的血液之中。Instagram采取单向的Follow机制&#xff0c;其社交关系链是更加广泛的弱关系…

一道算法题-被围绕的区域

广度优先和深度优先的题目都比较简单&#xff0c;大家有兴趣的话&#xff0c;可以看一下我的算法总结。被围绕的区域使用广度优先遍历算法进行解题&#xff0c;一次通过。 被围绕的区域 给你一个 m x n 的矩阵 board &#xff0c;由若干字符 ‘X’ 和 ‘O’ &#xff0c;找到…

第一题 两数之和

问题描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。你可以按任意顺…

Augmented Car Finder:用增强现实技术找汽车

对很多有车一族来说&#xff0c;开车和停车已经变得越来越难&#xff0c;一路上闪展腾挪&#xff0c;好不容易找到一个停车的地方&#xff0c;办完事回来&#xff0c;面对偌大的停车场或陌生的场所&#xff0c;常常会会想不起自己的车放在哪里了。一般做法是拿钥匙遥控汽车&…

尽在双11:阿里巴巴技术演进与超越

刚读完《尽在双11&#xff1a;阿里巴巴技术演进与超越》&#xff0c;这本书以双11为切入点&#xff0c;讲述了阿里巴巴技术演进过程。如果想从宏观上了解一个公司技术方面的发展&#xff0c;这本书值得一读。通过这本书也能看出&#xff0c;阿里在商业和技术方面确实位于头部&a…

白龙马和驴

最近想起以前看到的一个寓言故事&#xff0c;有一些新的感悟。 故事 传说白龙马西天取经以前&#xff0c;在一个农户家&#xff0c;每天拉车。与他在一起的&#xff0c;还有一头驴子&#xff0c;每天拉磨。后来&#xff0c;白龙马去西天取经荣归故里的时候&#xff0c;想起了…