当前位置: 首页 > news >正文

站长之家查询网seo免费教程

站长之家查询网,seo免费教程,专做奶粉网站保证一定正品,重庆知名商城网站建设公司目录 链式二叉树的实现: 前提须知: 前序: 中序: 后序: 链式二叉树的构建: 定义结构体: 初始化: 构建左右子树的指针指向: 前序遍历的实现: 中序…

目录

链式二叉树的实现:

前提须知:

前序:

中序:

后序:

链式二叉树的构建: 

定义结构体:

初始化: 

构建左右子树的指针指向:

前序遍历的实现: 

中序遍历的实现: 

后序遍历的实现: 

 求二叉树结点个数:

写法1: 

写法2: 

求树的叶子结点个数: 

求树的高度: 

求第K层结点: 

链式二叉树的实现:

前提须知:

链式二叉树的实现主要服务于那些不能被数组存储的非满二叉树和非完全二叉树,而在这些二叉树中,我们又将它们的组成结构进行拆分,分别是根、左子树、右子树。

而左子树和右子树又可以根据该结构划分为它们的根、左子树、右子树。 

前序:

 是将二叉树以根、左子树、右子树顺序进行结构划分遍历的遍历方式。

如图所示:其中N表示结点是NULL

以数字表示为:1 2 3 N N N 4 5 N N 6 N N

中序:

 是将二叉树以左子树、根、右子树顺序进行结构划分遍历的遍历方式。

如图所示:其中N表示结点是NULL

以数字表示为N 3 N 2 N 1 N 5 N 4 N 6 N

后序:

 是将二叉树以左子树、右子树、根顺序进行结构划分遍历的遍历方式。

如图所示:其中N表示结点是NULL

 以数字表示为N N 3 N 2 N N 5 N N 6 4 1

链式二叉树的构建: 

万恶之源~递归! 

定义结构体:

一个链式二叉树,需要有存放结点元素的data、需要有两个分别指向左子树、右子树的指针。

初始化: 

 开辟空间构建结点:

记得将构建的结点的左右子树指针进行初始化,以及结点元素进行赋值。 

构建左右子树的指针指向:

构建的结点如上图的二叉树结构所示。

前序遍历的实现: 

前序遍历的思路是,根、左子树、右子树,所以先要打印根,在前往根的左子树,而根的左子树又可以进行前序的遍历,因此使用递归的思想,先不断地进行调用以此抵达最左边的结点,随后逐级的递归,然后再迈向右子树进行相同的操作,也就是调用进入左子树,然后逐级递归…… 

二叉树走向图 

代码调用思路图 

中序遍历的实现: 

中序的遍历思想是左子树、根、右子树,所以再打印上是先打印左子树而后再打印根结点,最后再打印右子树,所以利用递归的思想,想要遍历到最左的结点,之后打印,随后进入右子树中,接着遍历左子树,以此类推……

 二叉树走向图

代码思路调用图

后序遍历的实现: 

后序就是中序的指向右子树和打印结点子树互换顺序即可 

 求二叉树结点个数:

用递归的思想,将问题化解为左子树的结点个数+右子树的结点个数+根结点的结点个数。

  • 而左右子树的结点个数又可以划分为左子树的结点个数+右子树的结点个数+根结点的结点个数。
  • 因此,本题就可以变为如果当前结点不是NULL那++size,如果是NULL则返回return。
  • 而再递归中return 也仅仅只是跳出了这一回的进程,返回上一次调用的进程并进入下一条代码中。
写法1: 

图解

写法2: 

 写法2就是彻底的简化了写法1,使用了三目运算符,将++size问题彻底变为了1的累加。

如果root = NULL 则返回0,如果不等于NULL 则进行调用 进入左子树的递归调用和右子树的递归调用

求树的叶子结点个数: 

叶子结点概念:树与二叉树堆:树-CSDN博客 

该问题的核心可以拆分为 树的叶子结点个数 =  左子树叶子结点个数+右子树叶子结点个数 

本问题其实是上一个问题的进阶版本,本质上多了两个条件,也就是当结点的左右子树指针指向的是NULL时便返回1,表示该节点是叶子节点,而非叶子节点则进入调用,分别进入结点的左右子树进行递归调用,知道root == NULL 或者是叶子节点,进行return 返回上一个结点开始逐级返回……

求树的高度: 

 本问题可以转化为求树的高度是左子树、右子树二者中高度最大的+1 ,这个1是根结点,由此可以化为1的累加问题。

也便是通过 root == NULL 进行逐级的返回,和+1来达成1的累加。

  1. 如上代码所示,进入了最左边的结点后,以root == NULL 为返回条件
  2. 当最左边结点的左子树的leftheight因为root == NULL 返回0, 结束后返回到了上一个结点(最左结点),并进入了该结点(最左结点)的右子树
  3. 随后右子树又以root == NULL 返回后,进入两个子树的高度对比
  4. 因为NULL 所以这里的两个返回值是 0 +1 和 0 + 1 进行对比,所以最后返回1 到本结点(最左结点)的上一个节点 (最左结点的父亲结点)

使用特殊函数进行比较 

求第K层结点: 

 假设,如果再根节点是求第K层,那么再根结点的左右子树的根结点来看是k-1层

  • 又因为 条件 root ==NULL 表示树是空的,所以返回0,而k == 1表示树只有一个根结点,所以只有一个结点
  • 又因为树可以拆分左右子树和根,而左右子树又可以继续拆分,而又是求第K层的结点个数,所以可以通过K==1这个条件进行返回进行回代数值。 
  • 也因此可以使用k>1和k-1进行不断地调用到第K层,然后进行回代返回值

注意,是带回返回值,而不是将返回值进行累加

思路图 


http://www.tj-hxxt.cn/news/96530.html

相关文章:

  • 建设部监理工程师报名网站资源网站优化排名优化
  • 南京网站优化品牌运营具体做什么
  • 事业单位网站建设费科目北京seo优化
  • 多用户网上商城系统seo搜索引擎优化技术教程
  • wordpress 列表页文章数商丘网站优化公司
  • 用php做的网站邢台市seo服务
  • 公司网站建设申请书怎么做好网络营销
  • 中国互联网协会成立最新seo课程
  • 做网站切片全国疫情高峰感染高峰进度查询
  • 网站关键词书写步骤谷歌浏览器官网手机版
  • 这是我做的网站吗女生学电子商务好吗
  • 网站建设公司推荐万维科技seo技巧seo排名优化
  • 网站开发属于软件开发类吗关键词seo优化公司
  • 网站搭建课程标准最近社会热点新闻事件
  • 金华网站建设系统企业管理培训机构
  • vs做网站如何发布电商平台推广
  • 天津网站开发贴吧精准引流推广
  • opensuse wordpress网站怎么优化到首页
  • 苏州市网站建设百度站长快速收录
  • 个人的网站怎么备案免费的b2b平台
  • 网站优化怎么弄网络推广怎么找客户
  • 商城和营销型网站建设大数据比较好的培训机构
  • wordpress title国外网站seo免费
  • 抖音粉丝购买网站sem投放是什么意思
  • 网站建设会计分录怎么做怎么在百度上发表文章
  • 海口专业网站制作策划南昌网站开发公司
  • 重庆哪里有做淘宝网站推广的北京建站
  • 做下载网站用阿里云的什么产品今日实时热搜
  • 衢州做网站的公司公司网站如何推广
  • 网站介绍ppt怎么做论坛企业推广