详细图解二叉树中序遍历(非递归)

  • 二叉树中序递归含义
  • LeetCode题目94
  • 详细图解
  • 源代码
  • 运行结果

二叉树中序递归含义

中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。若二叉树为空则结束返回,否则:
(1)中序遍历左子树
(2)访问根结点
(3)中序遍历右子树
如图1所示二叉树,中序遍历结果:DBEAFC

LeetCode题目94

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

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

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

详细图解



依次将左链入栈,取出栈顶元素并保存,入栈该元素右孩子,入栈右孩子左链。重复操作直到栈为空。

源代码

下面展示 源代码

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/#include<stack>
class Solution {public:vector<int> inorderTraversal(TreeNode* root) {stack<TreeNode *> s;//设定栈来存储节点TreeNode *temp=root;vector<int> ans;while(temp!=NULL){//先把左链入栈s.push(temp);temp=temp->left;}while(!s.empty()){//取出栈内元素temp=s.top();s.pop();ans.push_back(temp->val);//存储结果temp=temp->right;//进入右链while(temp!=NULL){s.push(temp);temp=temp->left;}}return ans;}
};

运行结果


时间超过100%

详细图解二叉树中序遍历(非递归C++)LeetCode94相关推荐

  1. 二叉树中序遍历非递归Java

    问题来源与描述 问题来源:LeetCode 94,二叉树的中序遍历 思路 二叉树的中序遍历顺序是左,根,右. 使用递归比较简单: class Solution {public List<Inte ...

  2. 二叉树(中序遍历)非递归

    为什么80%的码农都做不了架构师?>>>    #include <iostream> #include <stack> /* run this progra ...

  3. Java 二叉树中序遍历(递归/非递归)

    Java 二叉树中序遍历(递归/非递归) 中序遍历 代码实现 递归方式 非递归方式 简介: 遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访 ...

  4. 二叉树中序遍历非递归算法实现详解

    二叉树是数据结构中的经典结构,也是应用很广泛的结构之一.二叉树具有一些特定的性质,如 n0 = n2+1,在一些应用中,常常要求在树中查找具有某些特征的节点,或者对树中节点进行处理,即遍历二叉树的问题 ...

  5. 二叉树后序遍历(非递归)

    原文地址为: 二叉树后序遍历(非递归) 二叉树的递归遍历算法就不用说了:在非递归算法中,后序遍历难度大,很多书上只给出思想或者几段无法直接调试的代码,甚至有些书上是错的,当时我在研究的过程中,就是按着 ...

  6. 二叉树中序遍历(递归+非递归)Java

    目录 一.结构 二.遍历二叉树 1.中序遍历(递归) 代码 图解 2.中序遍历(非递归) 代码 图解 一.结构 二.遍历二叉树 这块内容是二叉树最核心的部分.不但要掌握七种遍历的写法,前.中.后序的递 ...

  7. 二叉树——中序遍历(递归/非递归)

    中序遍历,即遍历顺序为:左节点.根节点.右节点. 二叉树节点: public class Node {public Node left;public Node right;public int val ...

  8. 二叉树中序遍历(递归法和迭代法(非递归法))——C++

    声明:本文原题主要来自力扣,记录此博客主要是为自己学习总结,不做任何商业等活动! 二叉树的遍历有前序遍历.中序遍历.后序遍历和层次遍历,其中二叉树基本知识点可以参考博主上篇博客(二叉树基本知识点图文介 ...

  9. 【C语言】二叉树中序遍历(递归和非递归)算法

    二叉树中序遍历的实现思想是: 访问当前节点的左子树: 访问根节点: 访问当前节点的右子树: 图 1 二叉树 以图  1 为例,采用中序遍历的思想遍历该二叉树的过程为: 访问该二叉树的根节点,找到 1: ...

最新文章

  1. 运行ORB-SLAM笔记_编译篇(一)
  2. 什么是Zookeeper,Zookeeper的作用是什么,在Hadoop及hbase中具体作用是什么
  3. Mybatis深入了解(四)----输入输出映射
  4. TCL with SNPS - get_object_namesizeof_collectionstring
  5. delete不调用析构函数的两种情况
  6. 12年前的高考到底有多难,只在这一道题上就看出来了...
  7. java的if里有多个if_代码里写很多if会影响效率吗?
  8. 全国电视直播v1.0
  9. 软件测试工程师-缺陷报告
  10. 《5G,未来已来》——工信部发布5G宣传片!!!
  11. android和view相关的东西
  12. php 五子棋源联机版_PHP五子棋服务器代码
  13. NSArray去除重复元素
  14. _beginthread 与 _endthread 函数分析 (ReactOS版)
  15. win10 家庭版升级win11
  16. python变成灰色_Python怎么把彩色图像转换成灰色图像?
  17. android root 升级失败怎么办,安卓手机ROOT失败的常见原因及解决办法
  18. pytest框架笔记(十三) : Pytest+Allure定制报告
  19. autoit mysql update_RobotFramework+selenium+requests+autoit+mysql+appium 环境搭建
  20. Android计算器LinearLayout实现布局

热门文章

  1. nginx实现项目服务器集群管理案例和正反代理的解释
  2. 森海塞尔mx350 vs 魅族PT650
  3. 网络安全——漏洞扫描工具(AWVS的使用)
  4. GitHub Copilot 快速使用
  5. 爬虫框架scrapyd命令执行顺序
  6. linux ping只显示一条,Linux ping命令,检测网络是否连通
  7. Linux系统编程(文件)———文件打开/创建、写入、读取
  8. java addall equals_java HashSet 中addall()函数有重复怎么办?
  9. 雷替曲塞-聚乙二醇-马来酰亚胺 Raltitrexed-PEG-MAL
  10. 【CTF reverse Java逆向】JEB3.19逆向方案(已知2022.02.14可用)