【数据结构】二叉树(遍历,递归)

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

 🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343
🔥 系列专栏:《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm=1001.2014.3001.5482

【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树​​​

目录

二叉树遍历规则

前序遍历

中序遍历

 后序遍历

递归结构遍历

前序

中序

 求节点个数

求叶子节点个数

 求树的高度

求第k层节点个数


 文章来源地址https://www.toymoban.com/news/detail-803769.html

   前言

    💬 hello! 各位铁子们大家好哇。

             今日更新了树的遍历,递归的相关内容
    🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝

 

 

二叉树遍历规则

 【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树

前序遍历

注意:N代表空

分析:根据前序遍历的规则(根左右),先访问根1,然后左子树2,2的左子树3,3的左子树是N,右子树也是N,然后返回到2的右子树N,然后返回到1的右子树4,接着是4的左子树5,5的左右子树都是N,然后返回到4的右子树6,6的左右子树都是N。

中序遍历

【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树

分析:根据规则(左根右),1的左子树2,2的左子树3,3的左子树N,起始即为N,接着是根3,接着是3的右子树N,返回到根2,然后是2的右子树N,返回到根1,接着是1的右子树,以此类推。

 后序遍历

【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树

分析:过程变为左右根,其实质与前面两种一样。

递归结构遍历

【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树

上图是要遍历的树的模型。 

前序

假设树已构建好,下图是前序遍历的函数,执行后即可得到前序遍历的结果。

【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树

 下图是递归的流程图:

【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树

 

分析:开始先打印根1,然后递归调用根2,以此类推到3的左子树N。此时左子树遍历完,返回到3的右子树,每次调用完就返回到上一层的函数中。

【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树

上图是递归调用占用的大致空间,每次调用完函数,返回到上一层,上一层接着调用,就会重复利用之前销毁的空间,如果空间不足,能用多少是多少。因此,递归的空间复杂度是看递归的深度。 

中序

【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树

上图是中序遍历的函数,递归过程参考前序遍历过程。

后序遍历大致过程也同上,这里就不再写出。

 求节点个数

【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树

递归过程图如下:

【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树 

分析:如果根结点为空,则返回0。此递归过程会先找出左子树的节点个数,当遇到空节点时就返回0,然后加上根结点自身数量1,返回到上一层,以此类推。

求叶子节点个数

【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树 参考前面的递归过程理解。

 

 求树的高度

【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树

求第k层节点个数

【数据结构】二叉树(遍历,递归),数据结构,数据结构,c语言,开发语言,树 

分析:k-1目的是当到达第k层后,直接返回1到上一层 

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3cd3jqfe6fwg0

 

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

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

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

相关文章

  • Java 数据结构篇-二叉树的深度优先遍历(实现:递归方式、非递归方式)

    Java 数据结构篇-二叉树的深度优先遍历(实现:递归方式、非递归方式)

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍    文章目录         1.0 二叉树的说明         1.1 二叉树的实现         2.0 二叉树的优先遍历说明         3.0 用递归方式实现二叉树遍历         3.1 用递归方式实现遍历 - 前序遍历         3.2 用递归

    2024年02月05日
    浏览(11)
  • 【算法与数据结构】二叉树的三种遍历代码实现(下)—— 非递归方式实现(大量图解)

    【算法与数据结构】二叉树的三种遍历代码实现(下)—— 非递归方式实现(大量图解)

     上篇: 【算法与数据结构】二叉树的三种遍历代码实现(上)—— 用递归序知识点讲解_Hacynn的博客-CSDN博客 https://blog.csdn.net/zzzzzhxxx/article/details/133609612?spm=1001.2014.3001.5502 目录 前言 1、先序遍历 1.1、详细图解描述 1.2、先序遍历非递归代码实现  2、中序遍历 2.1、详细图解描

    2024年02月08日
    浏览(11)
  • 【算法与数据结构】二叉树的三种遍历代码实现(上)—— 用递归序知识点讲解

    【算法与数据结构】二叉树的三种遍历代码实现(上)—— 用递归序知识点讲解

      本篇博客 (上篇) 先带大家学习 递归方式 进行三种遍历, 而在后续的 (下篇) 中将为大家详细讲解非递归的三种遍历方式。 目录 1、二叉树 2、二叉树的递归遍历 2.1、先序遍历 2.2、中序遍历 2.3、后序遍历  二叉树(Binary tree)是树形结构的一个重要类型。许多实际问

    2024年02月08日
    浏览(17)
  • 【C语言/数据结构】二叉树(层序遍历|判断完全二叉树|性质)

    【C语言/数据结构】二叉树(层序遍历|判断完全二叉树|性质)

     🌈个人主页: 秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343 🔥 系列专栏: 《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm=1001.2014.3001.5482 ​ ​​​ 目录  层序遍历  层序遍历函数实现 判断二叉树是否为完全二叉树 二叉树性质        💬 hello! 各位铁子们大

    2024年01月24日
    浏览(15)
  • 【C语言 数据结构】二叉树的遍历

    【C语言 数据结构】二叉树的遍历

    所谓先序遍历二叉树,指的是从根结点出发,按照以下步骤访问二叉树的每个结点: 访问当前结点; 进入当前结点的左子树,以同样的步骤遍历左子树中的结点; 遍历完当前结点的左子树后,再进入它的右子树,以同样的步骤遍历右子树中的结点; 先序遍历这棵二叉树的过

    2024年02月04日
    浏览(14)
  • 数据结构与算法学习:二叉树的后序遍历的递归与非递归实现,以及非递归实现中的流程控制的说明。

    数据结构与算法学习:二叉树的后序遍历的递归与非递归实现,以及非递归实现中的流程控制的说明。

    需求二叉树: 采用二叉树后序遍历非递归算法。设置一个指针p初始指向树根,p先入栈,而后使得p指向它的左孩子p-firstchild,重复操作,使得每个左孩子都依次入栈,同时初始化一个Treenode*类型的指针 pre,这个指针是后序前驱,这个后序前驱用以区分为已访问过的结点和未

    2023年04月22日
    浏览(12)
  • 【数据结构】二叉树的前中后序遍历(C语言)

    【数据结构】二叉树的前中后序遍历(C语言)

    [二叉树] 顾名思义就是有 两个分支节点的树,不仅如此,除了叶子外的所有节点都具有两个分支节点; 由于结构像一棵倒立的树,顾名思义为二叉树 ; 如下图所示,该图即为一棵 野生的二叉树 ; 既然二叉树为树,固然有着和树一样的部分( 叶子、根、分支… ) 这些也成为

    2024年02月17日
    浏览(16)
  • 二叉树的链式结构 - 遍历 - C语言递归实现

    二叉树的链式结构 - 遍历 - C语言递归实现

    前序、中序以及后序遍历         二叉树遍历 (Traversal) 是按照某种特定的规则,依次对二叉 树中的节点进行相应的操作,并且每个节点只操作一次 。 按照规则,二叉树的遍历有: 前序/中序/后序 的递归结构遍历 : 1. 前序遍历 (Preorder Traversal 亦称先序遍历 )—— 访问根结

    2024年02月15日
    浏览(16)
  • 数据结构——二叉树(先序、中序、后序及层次四种遍历(C语言版))超详细~ (✧∇✧) Q_Q

    数据结构——二叉树(先序、中序、后序及层次四种遍历(C语言版))超详细~ (✧∇✧) Q_Q

    目录     二叉树的定义: *特殊的二叉树:  二叉树的性质:  二叉树的声明:   二叉树的先序遍历:  二叉树的中序遍历:  二叉树的后序遍历: 二叉树的层序遍历:  二叉树的节点个数: 二叉树叶节点个数:   最后完整代码: 运行结果:  二叉树是n(n≥0)个结点的

    2024年02月01日
    浏览(22)
  • 14-数据结构-二叉树的创建以及前中后遍历,以及结点和叶子节点的计算(C语言)

    14-数据结构-二叉树的创建以及前中后遍历,以及结点和叶子节点的计算(C语言)

    概述:         二叉树,这里采用孩子链表存储法,即一个数据域和两个左右孩子指针域。随后递归进行遍历即可。在创建二叉树的时候,先创建各个二叉树结点(这里的结点采用动态分配,因此结点为指针变量),随后,再根据逻辑结构图,手动通过左右指针域,链接到对

    2024年02月11日
    浏览(17)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包