数据结构--树和森林的遍历

这篇具有很好参考价值的文章主要介绍了数据结构--树和森林的遍历。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据结构–树和森林的遍历

数据结构--树和森林的遍历,408数据结构,数据结构,算法,二叉树,c语言,树的遍历,森林的遍历,c++

树的先根遍历

数据结构--树和森林的遍历,408数据结构,数据结构,算法,二叉树,c语言,树的遍历,森林的遍历,c++
void PreOrder(TreeNode* R)
{
    if (R != NULL)
    {
        visit(R);
        while (R还有下一个子树T)
            PreOrder(T);
    }
}

树和二叉树的转化后==》

数据结构--树和森林的遍历,408数据结构,数据结构,算法,二叉树,c语言,树的遍历,森林的遍历,c++

树的先根遍历序列与这棵树相应二叉树的先序序列相同。 \color{red}树的先根遍历序列与这棵树相应二叉树的先序序列相同。 树的先根遍历序列与这棵树相应二叉树的先序序列相同。

A B C D A ( B E F ) ( C G ) ( D H I ) A ( B ( E , K ) F ) ( C G ) ( D H I J ) \begin{array}{ccccccccc}\mathbf{A}&\mathbf{B}&&\mathbf{C}&&\mathbf{D}&\\\mathbf{A}&(\mathbf{B}&\mathbf{E}&\mathbf{F})&(\mathbf{C}&\mathbf{G})&(\mathbf{D}&\mathbf{H}&\mathbf{I})\\\mathbf{A}&(\mathbf{B}&(\mathbf{E},\mathbf{K})&\mathbf{F})&(\mathbf{C}&\mathbf{G})&(\mathbf{D}&\mathbf{H}&\mathbf{I}&\mathbf{J})\end{array} AAAB(B(BE(E,K)CF)F)(C(CDG)G)(D(DHHI)IJ)

树的后根遍历

数据结构--树和森林的遍历,408数据结构,数据结构,算法,二叉树,c语言,树的遍历,森林的遍历,c++
void PreOrder(TreeNode* R)
{
    if (R != NULL)
    {
        while (R还有下一个子树T)
            PreOrder(T);
		visit(R);
    }
}

树和二叉树的转化后==》

数据结构--树和森林的遍历,408数据结构,数据结构,算法,二叉树,c语言,树的遍历,森林的遍历,c++

树的后根遍历序列与这棵树相应二叉树的中序序列相同。 \color{red}树的后根遍历序列与这棵树相应二叉树的中序序列相同。 树的后根遍历序列与这棵树相应二叉树的中序序列相同。

B C D A ( E F B ) ( G C ) ( H I J D ) A ( ( K E ) F B ) ( G C ) ( H I J D ) A \begin{array}{cccccccc}&&\text{B}&\text{C}&&&\text{D}&\text{A}\\(&\mathrm{E}&\mathrm{F}&\mathrm{B})&(\mathrm{G}&\mathrm{C})&(\mathrm{H}&\mathrm{I}&\mathrm{J}&\mathrm{D})&\mathrm{A}\\((\mathrm{K}&\mathrm{E})&\mathrm{F}&\mathrm{B})&(\mathrm{G}&\mathrm{C})&(\mathrm{H}&\mathrm{I}&\mathrm{J}&\mathrm{D})&\mathrm{A}\end{array} (((KEE)BFFCB)B)(G(GC)C)D(H(HAIIJJD)D)AA

树的层次遍历

数据结构--树和森林的遍历,408数据结构,数据结构,算法,二叉树,c语言,树的遍历,森林的遍历,c++

广度优先遍历 \color{green}广度优先遍历 广度优先遍历

3) 层次遍历 \color{red}层次遍历 层次遍历(用队列实现)
①若树非空,则根节点入队
②若队列非空,队头元素出队并访问,同时将该元素的孩子依次入队
③重复②直到队列为空

森林的先序遍历

森林。森林是 m ( m ≥ 0 ) m (m\ge0) m(m0棵互不相交的树的集合。每棵树去掉根节点后,其各个子树又组成森林。

数据结构--树和森林的遍历,408数据结构,数据结构,算法,二叉树,c语言,树的遍历,森林的遍历,c++

1) 先序遍历森林 \color{red}先序遍历森林 先序遍历森林
若森林为非空,则按如下规则进行遍历:
访问森林中第一棵树的根结点。
先序遍历第一棵树中根结点的子树森林。
先序遍历除去第一棵树之后剩余的树构成的森林。

效果等同于依次对各个树进行先根遍历 \color{red}效果等同于依次对各个树进行先根遍历 效果等同于依次对各个树进行先根遍历

BCD ( B E F ) ( C G ) ( D H I J ) (B(EKL) F) (C G) (D (H M) I J) \begin{aligned} &\text{BCD} \\ &(BEF)(CG)(DHIJ) \\ &\text{(B(EKL) F) (C G) (D (H M) I J)} \end{aligned} BCD(BEF)(CG)(DHIJ)(B(EKL) F) (C G) (D (H M) I J)

数据结构--树和森林的遍历,408数据结构,数据结构,算法,二叉树,c语言,树的遍历,森林的遍历,c++

效果等同于依次对二叉树的先序遍历 \color{red}效果等同于依次对二叉树的先序遍历 效果等同于依次对二叉树的先序遍历

森林的中序遍历

森林。森林是 m ( m ≥ 0 ) m (m\ge0) m(m0棵互不相交的树的集合。每棵树去掉根节点后,其各个子树又组成森林。

数据结构--树和森林的遍历,408数据结构,数据结构,算法,二叉树,c语言,树的遍历,森林的遍历,c++

2) 中序遍历森林 \color{red}中序遍历森林 中序遍历森林
若森林为非空,则按如下规则进行遍历:
中序遍历森林中第一棵树的根结点的子树森林。访问第一棵树的根结点。
中序遍历除去第一棵树之后剩余的树构成的森林。

效果等同于依次对各个树进行后根遍历 \color{red}效果等同于依次对各个树进行后根遍历 效果等同于依次对各个树进行后根遍历

B C D ( E F B ) ( G C ) ( H J D ) ( ( K L E ) F B ) ( G C ) ( ( M H ) I J D ) \begin{array}{cccccccc}&&&&\text{B}&&\text{C}&&\text{D}\\(&&&E&\text{F}&\text{B})&(\text{G}&\text{C})&(&\text{H}&\text{J}&\text{D})\\((\text{K}&\text{L}&\text{E})&\text{F}&\text{B})&(\text{G}&\text{C})&((\text{M}&\text{H})&\text{I}&\text{J}&\text{D})\end{array} (((KLE)EFBFB)B)(GC(GC)C)((MD(H)HIJJD)D)

数据结构--树和森林的遍历,408数据结构,数据结构,算法,二叉树,c语言,树的遍历,森林的遍历,c++

效果等同于依次对二叉树的中序遍历 \color{red}效果等同于依次对二叉树的中序遍历 效果等同于依次对二叉树的中序遍历文章来源地址https://www.toymoban.com/news/detail-558483.html

知识点回顾与主要考点

数据结构--树和森林的遍历,408数据结构,数据结构,算法,二叉树,c语言,树的遍历,森林的遍历,c++

到了这里,关于数据结构--树和森林的遍历的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++数据结构与算法详解:链表、栈、队列、树、二叉树和图结构的实现与应用

    链表是一种常见的数据结构由一系列节点按顺序连接而成,一般每个节点包含一个数据元素和一个指向下一个节点的引用。 链表有多种类型: 单向链表:每个节点只有一个指向下一个节点的引用 双向链表:每个节点有一个指向前一个节点和一个指向后一个节点的引用 循环链

    2024年02月04日
    浏览(47)
  • 《数据结构》第七章:树和森林

    在客观世界中,存在着诸多如行政机构、磁盘目录和族谱的组织结构,与动物分类类似,是一种层次化结构,可采用树形结构表示。譬如磁盘目录,一个目录的子目录通常不止两个,无法用二叉树表示,需要采用多叉树的形式,即每个结点可以有不同数目的子结点。 树 是含

    2024年01月23日
    浏览(50)
  • 探索树形数据结构,通识树、森林与二叉树的基础知识(专有名词),进一步利用顺序表和链表表示、遍历和线索树形结构

      结点之间有分支,具有层次关系 树的定义 : 树 (tree)是n(n≥0)个有限集。 若n = 0,则称为空树; 若n 0,则它满足如下两个条件: 有且仅有一个特定的称为根(Root)的结点; 其余结点可分为m(m≥0)个互不相交的有限集T1,T2,T3,.....,Tm,其中每一个集合本身又是一棵树,并称为根的

    2024年02月01日
    浏览(50)
  • 数据结构与算法-二叉树的遍历

    🌞 “少年没有乌托邦,心向远方自明朗!” 二叉树的遍历是按照一定次序访问二叉树中的所有结点,且每个结点仅被访问一次的过程。遍历线性结构是容易解决的,而二叉树的结构是非线性结构,需要寻找规律,使二叉树的结点排列在一个线性队列上,便于遍历。 由二叉树

    2024年02月08日
    浏览(45)
  • 数据结构与算法-二叉树-层次遍历I

    给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 思路:提到层次遍历,首先想到的就是用队列,首先将头节点放入队列中,然后出队,将出队节点的左节点和右节点分别入队,一直重复该操作,直到队列为空。 但是

    2024年01月21日
    浏览(37)
  • 【数据结构】二叉树的遍历递归算法详解

    我们来写一个函数 BuyNode(x)函数 用于创建二叉树结点。 用动态开辟函数 malloc 函数进行动态开辟,并强制转换为 BTNode 型,用变量 node 来去管理开辟的空间。 我们初始化结点,其 val 即为传入的参数x,左右指针 left 和 right 都设为NULL。 我们在主函数中创建上面这样一颗二叉树

    2024年01月20日
    浏览(43)
  • 【数据结构与算法】力扣:二叉树的层序遍历

    给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入:root = [1] 输出:[[1]] 示例 3: 输入:root = [] 输出:[] 来源:力扣(LeetCode) 链接:https://leetcode.cn/p

    2024年02月13日
    浏览(44)
  • 数据结构与算法----详解二叉树的遍历(迭代、递归)

    ❤️ 作者简介 :大家好我是小鱼干儿♛是一个热爱编程、热爱算法的大三学生,蓝桥杯国赛二等奖获得者 🐟 个人主页 :https://blog.csdn.net/qq_52007481 ⭐ 个人社区 :【小鱼干爱编程】 🔥 算法专栏 :算法竞赛进阶指南 💯 刷题网站 :虽然市面上有很多的刷题网站,但是里面

    2024年01月24日
    浏览(51)
  • 【夜深人静学数据结构与算法 | 第四篇】手撕二叉树遍历

    目录 前言: 二叉树遍历方式: 手撕前中后序遍历(递归)的三大准备 深度优先搜索:  手撕前中后遍历(递归): 手撕前中后序遍历(迭代): 深度优先搜索: 总结:         今天我们将带领大家手撕二叉树的遍历,本篇会分别讲解深度优先搜索法和广度优先有搜索法下

    2024年02月09日
    浏览(47)
  • 数据结构—树和二叉树

    5.1树和二叉树的定义 树形结构 (非线性结构):结点之间有分支,具有层次关系。 5.1.1树的定义 树(Tree)是n(n≥0)个结点的有限集。 若n=0,称为空树; 若n>0,则它满足如下两个条件: 有且仅有一个特定的称为根(Root)的结点; 其余结点可分为m(m≥0)个互不相交的

    2024年02月14日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包