(必背)二叉树的前中后序遍历(利用栈)
二叉树的前序遍历(利用栈)
1.首先将根节点压入栈
2.栈中的首元素出栈,然后先将其右节点压入栈中,再将栈中的左节点压入栈中(如果左右节点分别存在的话)
3.重复步骤2直到栈为空
class Solution {
public:stack<TreeNode*> st;vector<int> preorderTraversal(TreeNode* root) {vector<int> res;if(root == nullptr) return res;st.push(root);while(!st.empty()){TreeNode* tp = st.top();st.pop();res.push_back(tp->val);if(tp->right) st.push(tp->right);if(tp->left) st.push(tp->left);}return res;}
};
二叉树的中序遍历(利用栈)
遍历是按照“左根右”的顺序来进行的,按照"右根左"的方法进行遍历,然后翻转一下就可以得到答案
class Solution {
public:stack<TreeNode*> st;vector<int> inorderTraversal(TreeNode* root) {vector<int> res;while(root || st.size()){while(root){st.push(root);root = root->right;}root = st.top();res.push_back(root->val);st.pop();root = root->left;}reverse(res.begin(),res.end());return res;}
};
二叉树的后序遍历(利用栈)
遍历是按照“左右根”的顺序来进行的,按照"根右左"的方法进行遍历,然后翻转一下结果就可以得到答案
class Solution {
public:stack<TreeNode*> st;vector<int> postorderTraversal(TreeNode* root) {vector<int> res;while(root || st.size()){while(root){res.push_back(root->val);st.push(root);root = root->right;}root = st.top()->left;st.pop();}reverse(res.begin(),res.end());return res;}
};
(必背)二叉树的前中后序遍历(利用栈)相关推荐
- 二叉树的前中后序遍历(栈)(C++)
二叉树的遍历是很基础的东西,用递归是很简洁明了的写法,但是栈的写法也可以了解一下 #include<vector> #include<stack> struct TreeNod ...
- 二叉树的前,中,后序遍历(思路分析) [Java][数据结构]
二叉树的前,中,后序遍历(思路分析) 前序遍历: 先输出父节点, 再遍历左子树和右子树 中序遍历: 先遍历左子树, 再输出父节点,再遍历右子树 后序遍历: 先遍历左子树,再遍历右子树,最后输出父节点 ...
- Java二叉树的前中后序遍历
Java二叉树的前中后序遍历 1.前序遍历 1.1前序遍历概念 1.2前序遍历习题 2.中序遍历 2.1中序遍历概念 2.2中序遍历习题 3.后续遍历 3.1后序遍历概念 3.2后序遍历习题 大家好, ...
- 数据结构之二叉树的前中后序遍历以及层序遍历
学习目标:读完这篇博客搞定二叉树的前中后序以及层序遍历 首先:你应该明白什么是二叉树,下面这幅图就是一个完全二叉树 其实所谓的二叉树就是一个节点有小于等于二个分支的树,可以没有分支,可以有1条分支,可 ...
- 数据结构与算法(java):树-二叉树(二叉查找树(BST)、线索化二叉树、哈夫曼树、平衡二叉树【AVL】、二叉树的前中后序遍历)
二叉树 1.定义 二叉树 就是度不超过2的树(每个结点最多只有两个子结点).如图 2.特殊二叉树 满二叉树 当二叉树的每一个层的结点树都达到最大值,则这个二叉树就是满二叉树. 完全二叉树 叶结点只能出 ...
- 二叉树的前中后序遍历之迭代法(非统一风格迭代方式)
文章目录 前言 一.前序遍历(迭代法) 二.中序遍历(迭代法) 三.后序遍历(迭代法) 总结 前言 「递归的实现就是:每一次递归调用都会把函数的局部变量.参数值和返回地址等压入调用栈中」,然后递归返回 ...
- 二叉树的前中后序遍历(考试常考)
二叉树遍历的概念 二叉树的遍历是按某种规则对二叉树的每个节点均只被访问一次,根据根节点访问位置的不同分为三种:先序遍历(根左右).中序遍历(左根右).后序遍历(左右根). 由于树是通过 ...
- 【数据结构】二叉树的前中后序遍历
二叉树的三种遍历 1. 创建一棵简单的二叉树 1.1 二叉树结构体实现 1.2 创造一个二叉树结点的函数 1.3 手动创造一棵二叉树 2.为什么要遍历? 3.最重要的知识:由二叉树引出的子问题分析 4 ...
- 二叉树的前中后序遍历之迭代法(统一风格迭代方式)
一.前序遍历(迭代法)->右左中 前序遍历是中左右,每次先处理的是中间节点,那么先将根节点放入栈中,然后将右孩子加入栈,再加入左孩子. 为什么要先加入 右孩子,再加入左孩子呢?因为这样出栈的时候 ...
最新文章
- 工业用微型计算机(11)-指令系统(8)
- linux编写日志接口so,linux下动态链接问题(.so文件的编写与调用) .
- docker --- 镜像、容器
- 前端学习(2992):vue+element今日头条管理--目录结构说明
- 干货|我在 GitHub 上发现了一款骚气满满的字体!
- 900万注释图像数据集升级了!谷歌开放Open Images V6,首增语音、文本、鼠标轨迹同步注释...
- “use strict” 严格模式使用(前端基础系列)
- 全栈出征,京东技术基石如何为“618”大促护航?
- 输入n个字符串字典序排序_30个Python奇淫技巧集
- 由前序遍历和中序遍历确定二叉树
- css元素居中的几种方式
- Unity编辑器修改图片的大小
- JavaScript自定义求和函数
- 网页H5实现 美团接单 连接打印机打印客户下单信息
- 软件开发知识点基础介绍
- 【网安神器篇】——mimikatz系统取证工具
- 【转载】yafu的安装及使用(线下工具与线上网站)
- 小程序带参数二维码生成接口
- U盘分区合并的教程详解
- 开源3D播放器bino
热门文章
- 吃鸡服务器显示错误代码103,安装错误代码103怎么回事?
- Internet——Download——Manager学习记录
- 海思 Hi3516 使用 gpac 库把 H265 和 AAC 封装成 MP4
- nvcc与nvidia
- STM32F105配置为USB设备时
- Warning: preg_match(): Compilation failed: PCRE does not support
- 错误ID:10005,错误信息:DCOM 遇到错误“无法启动服务,原因可能是它被禁用或与它相关联的设备没有启动。 ”,试图以参数“”启动服务 SENS 以运行服务器:...
- YOLOv5读取摄像头实时检测目标并将裁剪后的部分保存
- 罗升阳:那两年炼就的Android内功修养
- linux删除文件夹或者文件