详细图解二叉树中序遍历(非递归C++)LeetCode94
详细图解二叉树中序遍历(非递归)
- 二叉树中序递归含义
- 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相关推荐
- 二叉树中序遍历非递归Java
问题来源与描述 问题来源:LeetCode 94,二叉树的中序遍历 思路 二叉树的中序遍历顺序是左,根,右. 使用递归比较简单: class Solution {public List<Inte ...
- 二叉树(中序遍历)非递归
为什么80%的码农都做不了架构师?>>> #include <iostream> #include <stack> /* run this progra ...
- Java 二叉树中序遍历(递归/非递归)
Java 二叉树中序遍历(递归/非递归) 中序遍历 代码实现 递归方式 非递归方式 简介: 遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访 ...
- 二叉树中序遍历非递归算法实现详解
二叉树是数据结构中的经典结构,也是应用很广泛的结构之一.二叉树具有一些特定的性质,如 n0 = n2+1,在一些应用中,常常要求在树中查找具有某些特征的节点,或者对树中节点进行处理,即遍历二叉树的问题 ...
- 二叉树后序遍历(非递归)
原文地址为: 二叉树后序遍历(非递归) 二叉树的递归遍历算法就不用说了:在非递归算法中,后序遍历难度大,很多书上只给出思想或者几段无法直接调试的代码,甚至有些书上是错的,当时我在研究的过程中,就是按着 ...
- 二叉树中序遍历(递归+非递归)Java
目录 一.结构 二.遍历二叉树 1.中序遍历(递归) 代码 图解 2.中序遍历(非递归) 代码 图解 一.结构 二.遍历二叉树 这块内容是二叉树最核心的部分.不但要掌握七种遍历的写法,前.中.后序的递 ...
- 二叉树——中序遍历(递归/非递归)
中序遍历,即遍历顺序为:左节点.根节点.右节点. 二叉树节点: public class Node {public Node left;public Node right;public int val ...
- 二叉树中序遍历(递归法和迭代法(非递归法))——C++
声明:本文原题主要来自力扣,记录此博客主要是为自己学习总结,不做任何商业等活动! 二叉树的遍历有前序遍历.中序遍历.后序遍历和层次遍历,其中二叉树基本知识点可以参考博主上篇博客(二叉树基本知识点图文介 ...
- 【C语言】二叉树中序遍历(递归和非递归)算法
二叉树中序遍历的实现思想是: 访问当前节点的左子树: 访问根节点: 访问当前节点的右子树: 图 1 二叉树 以图 1 为例,采用中序遍历的思想遍历该二叉树的过程为: 访问该二叉树的根节点,找到 1: ...
最新文章
- 运行ORB-SLAM笔记_编译篇(一)
- 什么是Zookeeper,Zookeeper的作用是什么,在Hadoop及hbase中具体作用是什么
- Mybatis深入了解(四)----输入输出映射
- TCL with SNPS - get_object_namesizeof_collectionstring
- delete不调用析构函数的两种情况
- 12年前的高考到底有多难,只在这一道题上就看出来了...
- java的if里有多个if_代码里写很多if会影响效率吗?
- 全国电视直播v1.0
- 软件测试工程师-缺陷报告
- 《5G,未来已来》——工信部发布5G宣传片!!!
- android和view相关的东西
- php 五子棋源联机版_PHP五子棋服务器代码
- NSArray去除重复元素
- _beginthread 与 _endthread 函数分析 (ReactOS版)
- win10 家庭版升级win11
- python变成灰色_Python怎么把彩色图像转换成灰色图像?
- android root 升级失败怎么办,安卓手机ROOT失败的常见原因及解决办法
- pytest框架笔记(十三) : Pytest+Allure定制报告
- autoit mysql update_RobotFramework+selenium+requests+autoit+mysql+appium 环境搭建
- Android计算器LinearLayout实现布局
热门文章
- nginx实现项目服务器集群管理案例和正反代理的解释
- 森海塞尔mx350 vs 魅族PT650
- 网络安全——漏洞扫描工具(AWVS的使用)
- GitHub Copilot 快速使用
- 爬虫框架scrapyd命令执行顺序
- linux ping只显示一条,Linux ping命令,检测网络是否连通
- Linux系统编程(文件)———文件打开/创建、写入、读取
- java addall equals_java HashSet 中addall()函数有重复怎么办?
- 雷替曲塞-聚乙二醇-马来酰亚胺 Raltitrexed-PEG-MAL
- 【CTF reverse Java逆向】JEB3.19逆向方案(已知2022.02.14可用)