数据结构(六)二叉树的遍历(递归非递归方法)
数据结构(六)二叉树的遍历(递归非递归方法)
一、递归方法
1.先序遍历
void PreOrder(BiTree T)
{visit(T);PreOrder(T->LChild)PreOrder(T->RChild)
}
2.先序遍历
void PreOrder(BiTree T)
{PreOrder(T->LChild)visit(T);PreOrder(T->RChild)
}
3.先序遍历
void PreOrder(BiTree T)
{PreOrder(T->LChild)PreOrder(T->RChild)visit(T);
}
二、非递归方法
非递归的方法我们主要采用栈的方法,先进后出
1.中序遍历
void MidSearch01(BiTree T)
{stack<BitTNode*> p;while (T || !p.empty()){if (T){p.push(T);T = T->lchild;}else{T = p.top();cout << T->data << "\t";p.pop();T = T->rchild;}}}
2.先序遍历
//前序遍历(非递归)void PreSearch01(BiTree T)
{stack<BitTNode*> p;while (T || !p.empty()){if (T){cout << T->data << "\t";p.push(T);T = T->lchild;}else{T= p.top();p.pop();T = T->rchild;}}
}
3.后序遍历
后序遍历相对于前中序遍历要麻烦一些
BitTNode* r = NULL;//标记位置
//后序遍历(非递归)
void PostSearch01(BiTree T)
{stack<BitTNode*> p;while (T || !p.empty()){if (T){p.push(T);T = T->lchild;}else{T = p.top();if (T->rchild && T->rchild != r){T = T->rchild;p.push(T);T = T->lchild;}else{p.pop();cout << T->data << "\t";r = T;T = NULL;}}}}
4.层次遍历
//层次遍历
void LevelOrder(BiTree T)
{queue<BitTNode*> q;q.push(T);while (!q.empty()){T = q.front();q.pop();cout << T->data << "\t";if (T->lchild != NULL){q.push(T->lchild);}if (T->rchild != NULL){q.push(T->rchild);}}}
数据结构(六)二叉树的遍历(递归非递归方法)相关推荐
- 数据结构(七)图的遍历(递归非递归方法)
图的遍历(递归非递归方法) #include<iostream> #include<stdio.h> #include<stack> #include<que ...
- 二叉树的遍历-递归与非递归 - 海子
二叉树的遍历-递归与非递归 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的.对于二叉树,有前序.中序以及后序三种遍历方法.因为树的定义本身就是递归定义,因此采用递归的方 ...
- 二叉树的遍历(非递归)整理
二叉树的遍历(非递归) 写在前面 二叉树重要,重要,重要.以下代码每日手撸一遍,深刻理解. 二叉树的先序遍历(非递归) 巧记心法 判断是否为空树 1.右侧入栈(访问,q指向右孩子,不空则入栈) 2.p ...
- 二叉树深度优先遍历(非递归)
二叉树深度优先遍历(非递归) 1. 先序遍历非递归化 从根结点开始入栈一个元素 不停的执行以下操作: 如果栈不空,就出栈一个元素,并对其进行访问,并访问其左右孩子 若左右孩子存在,则依次入栈,右孩子先 ...
- 二叉树前序遍历(递归法和迭代法(即非递归法))——C++
声明:本文原题主要来自力扣力扣,记录此博客主要是为自己学习总结,不做任何商业等活动 本文主要讲解二叉树的前序遍历递归法和迭代法.中序遍历和后序遍历可以参考博主下面两篇博客:二叉树中序遍历(递归法和迭代 ...
- 二叉树的前序遍历、中序遍历、后序遍历(递归+非递归实现)
目录 前序遍历 递归实现 非递归实现 中序遍历 递归实现 递归实现 后序遍历 递归实现 非递归实现 二叉树是一种非常经典的数据结构,它的应用途径十分广泛,但同时它也是一种简单的.易理解的数据结构,解决 ...
- 二叉树的遍历(递归与非递归)
class Node: # 定义树节点def __init__(self, value, left=None, right=None): # 节点的值及左子树.右子树self.value = valu ...
- 二叉树层序遍历递归与非递归_总结归纳:二叉树遍历【递归 amp;amp; 非递归】...
今天为大家总结了二叉树前中后序遍历的递归与迭代解法: 1. 前序遍历 递归 List list=new ArrayList<>();public ListpreOrder(TreeNode ...
- 二叉树前中后层遍历(递归/非递归)(简单易懂(*^ー^))
文章目录 二叉树的遍历 1 先序遍历 1.1 递归 1.2 非递归 2 中序遍历 2.1 递归 2.2 非递归 3 后序遍历 3.1 递归 3.2 非递归 4 层序遍历 5 前中后层序完整可运行代码( ...
最新文章
- 大厂前端高频面试问题与答案精选
- CentOS6 安装并破解Jira 7
- oracle 附加日志 挂起,Oracle 附加日志(supplemental log)
- 五.几何对象和空间参考
- 设计模式的C语言应用-适配及系列模式-第六章
- BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化dp
- 【转】粒子群算法----粒子群算法简介
- 第九天 面试失败了。。。。
- webpack配置时:Plugin/Preset files are not allowed to export objects, only functions.
- 有量纲和无量纲是什么意思_为什么无线通信需要同步?
- 子在川上曰:nginx的安装和配置、node服务器的配置、mongdb的安装、pm2进行项目动态管理
- 家庭影院是什么?为什么选择家庭影院?
- 查看服务器ip配置信息,怎么查看服务器ip地址,怎么查看ip地址和端口
- cidaemon.exe进程cpu使用率100%
- 3.10 Ctrl+A快捷键在表格中的使用 [原创Excel教程]
- flask中flash(闪现)的使用
- 9139 位艺人在 Python 面前不值一提 # Python 爬虫小课 5-9
- 【教学类-23-01】20221217《不会写学号的中班幼儿的学号描字贴》(中班描字)
- 详解ZStack高级功能--裸金属服务
- 解决七牛云链接失效以及批量下载图片并迁移阿里云 OSS
热门文章
- SharePoint 2013 开发——其他社交功能
- 【SQL】sql版Split函数。用于拆分字符串为单列表格
- asp.net mvc使用的心得和问题的解决方法(陆续更新ing)
- python处理字符串数组慢_Python字符串处理 - str/bytes
- python爬虫requests实战_Python爬虫之requests库网络爬取简单实战
- Flask和mysql多线程_Flask解析(二):Flask-Sqlalchemy与多线程、多进程
- three.js制作3d模型工具_3D打印模型打磨抛光常用工具
- 小学计算机技术指导纲要,《中小学信息技术课程指导纲要(试行)》
- linux db2sysc 内存,db2sysc进程占用linux内存持续增长,请各位指点。
- Erwin 生成 mysql 带注释(comment )的脚本