数据结构(十三)树的遍历
1. 前序遍历
(1) 递归方法
function(node*p)
{print p.valuefunction(p->left);function(p->right);
}
(2)非递归方法
while(p!=null&&!stack.empty())
{while(p!=null){print p.value;stack.push(p);p=p.left;}if(!stack.empty()){temp=stack.pop();p=temp.right;}
}
2、中序遍历
先访问左子树,再访问自己,然后访问右子树
(1)递归方法
function(node*p)
{function(p->left);print p.valuefunction(p->right);
}
(2)非递归方法
while(p!=null&&!stack.empty())
{while(p!=null){stack.push(p);p=p.left;}if(!stack.empty()){temp=stack.pop();print temp.value; p=temp.right;}
}
3.后序遍历
先左子树,后右子树,后自己
(1)递归方法
function(node*p)
{function(p->left);function(p->right);print p.value
}
(2)非递归方法
while(p!=null&&!stack.empty())
{while(p!=null){stack.push(p);p=p.left;}if(!stack.empty()){temp=statck.first();if(temp.isfirst==false){temp.isfirst=true;p=temp.right}else{temp=stack.pop();print temp.value}}
}
4、广度优先遍历
广度优先遍历主要是用队列来实现,每次都是从队列的首个元素取出,先进先出
function(node*p)
{Queue.insert(p);While(!queue.empty()){p=queue.pop();queue.push(p->left);queue.push(p->right);print p.value;}
}
5、深度优先遍历
深度优先遍历主要是用栈来实现,每次都从栈顶取出。
function(node*p)
{Stack.insert(p);While(!Stack.empty()){p=Stack.pop();Stack.push(p->left);Stack.push(p->right);print p.value;}
}
数据结构(十三)树的遍历相关推荐
- 数据结构思维 第六章 树的遍历
第六章 树的遍历 原文:Chapter 6 Tree traversal 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 本章将介绍一个 Web 搜索引擎,我们将在本书其余部分开 ...
- 【数据结构-树】1.树与森林(树的遍历、树的存储方法、并查集的实现)
树的定义 树是一种数据结构,它是由 n(n>=1)n(n>=1)n(n>=1) 个有限结点组成一个具有层次关系的集合.把它叫做 "树" 是因为它看起来像一棵倒挂的 ...
- 算法与数据结构--空间复杂度O(1)遍历树
大家好~我叫「小鹿鹿鹿」,是本卖萌小屋的第二位签约作(萌)者(货).和小夕一样现在在从事NLP相关工作,希望和大家分享NLP相关的.不限于NLP的各种小想法,新技术.这是我的第一篇试水文章,初来乍到, ...
- 树的基本概念和遍历规则 数据结构和算法 二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)
zsychanpin 博客园 首页 新随笔 联系 订阅 管理 树的基本概念和遍历规则 树的递归定义 树是n(n>0)个结点的有限集,这个集合满足下面条件: ⑴有且仅有一个结点没有前驱 ...
- DSt:数据结构的简介、最强学习路线(逻辑结构【数组-链表-栈和队列/树-图-哈希】、物理结构、数据运算【十大排序/四大查找-图三大搜索-树三大遍历】、高级算法【贪心/分治/动态规划】之详细攻略
DSt:数据结构的简介.最强学习路线(逻辑结构[数组-链表-栈和队列/树-图-哈希].物理结构[元素/关系].数据运算[十大排序/四大查找-图三大搜索-树三大遍历].高级算法[贪心/分治/动态规划]) ...
- 数据结构——树的遍历
文章目录 数据结构--树的遍历 1.树的基本概念 2.树的遍历 Tree Traversal 3.前序遍历 Preorder Traversal 4.中序遍历 Inorder Traversal 5. ...
- 数据结构 树的遍历(递归遍历)
//树的遍历--递归遍历 #include<stdio.h> #include<stdlib.h> #include<string.h>typedef struct ...
- 字符串匹配数据结构 --Trie树 高效实现搜索词提示 / IDE自动补全
文章目录 1. 算法背景 2. Trie 树实现原理 2.1 Trie 树的构建 2.2 Trie树的查找 2.3 Trie树的遍历 2.4 Trie树的时间/空间复杂度 2.5 Trie 树 Vs ...
- 数据结构显示树的所有结点_您需要了解的有关树数据结构的所有信息
数据结构显示树的所有结点 When you first learn to code, it's common to learn arrays as the "main data struct ...
最新文章
- java类加载器、双亲委派、沙箱安全机制全都让你整明白(三万字,收藏慢慢啃)
- mac os 安装linux驱动,教程:Ubuntu 14.04安装Mac OS X主题
- 手握顶会顶刊论文,自信满满面试算法岗竟被刷?
- 信息学奥赛一本通 1064:奥运奖牌计数 | OpenJudge NOI 1.5 07
- rgb红色范围_RGB与BRG模式
- springcloud断点续传源码_SpringCloud 超大文件上传和断点续传的实现
- 智能控制-模糊控制Matlab函数汇总
- 计算机平面设计与工程论文,计算机平面设计毕业论文
- OpenCV学习——摄像头实时进行人脸识别
- svn 1.12.0 版本以及汉化包(百度网盘分享--永久有效)
- Matlab中求解总体标准差和样本标准差的区别(std函数)
- 程序员这高薪岗位只有计算机专业的能做?
- 大数据笔记(三):HDFS集群搭建-伪分布式模式
- (计算机体系结构)7.3 基于硬件的前瞻执行
- 动态网站开发(应该怎么做啊)
- JZOJ 4210. 【五校联考1day1】我才不是萝莉控呢
- 锐捷睿易RAP100全新上市 WALL AP也有超高性能
- 树莓派4B安装官方发布64位 Raspberry Pi OS 系统
- datagrip 快捷键
- Robocode教程1——安装、运行、配置
热门文章
- put多文件上传linux,linux 上传lftp 服务器
- mysql timestamp add_「timestampdiff」MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法 - seo实验室...
- html button 自动提交,html+js表单form验证自动提交的2种提交方式button和
- python sendfile_python发邮件
- html5文本超过指定行数隐藏显示省略号
- 从对集合数据去重到Distinct源码分析
- C++中 #define的用法
- 人民币 小写金额转换为大写金额
- ANDROID深度探索(卷1)HAL与驱动开发 第四章
- [转]linux之top命令