[leetcode二叉树系列]1 二叉树的中序遍历_二叉树


 本文涉及知识点 

  • 二叉树的基本概念

  • 栈的运用

二叉树的基本概念和栈的相关概念前面已经介绍,忘记了的小伙伴复习后再看效果一定翻倍哟!

二叉树知识复习:[今天给二叉树加个BGM,二叉树唱歌了!]

栈知识复习:[leetcode栈队列]1 栈实现队列

1Leetcode94 二叉树的中序遍历

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





示例1:

 [1,null,2,3]
   1
    \
     2
    /
   3 [1,3,2]




小蓝希望大家在此思考1分钟,

效果更好哈!

01题目解析
  • 思路

基本思路

对于一颗二叉树,我们能拿到根节点的root指针,首先访问的是根节点。但是我们需要按照左子树,根节点,右子树的顺序输出,那么什么数据结构有先出现后出来的特点,这就引入了


  • 从根节点访问,依次访问其左节点并入栈。

[leetcode二叉树系列]1 二叉树的中序遍历_二叉树_02

  • 如果为NULL,弹出栈顶元素并将此元素的右节点放入栈中,重复此步骤。如上图D没有左右节点,此时弹出栈顶D,B,此时B存在右节点则入栈如下图。

[leetcode二叉树系列]1 二叉树的中序遍历_二叉树_03



02代码实现

1c++版本

[leetcode二叉树系列]1 二叉树的中序遍历_二叉树_04

2python版本

[leetcode二叉树系列]1 二叉树的中序遍历_二叉树_05

3java版本

[leetcode二叉树系列]1 二叉树的中序遍历_二叉树_06