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

没有设计稿做网站天津网站开发价格

没有设计稿做网站,天津网站开发价格,宁波关键词优化平台,域名查询网站一,引言 二叉树作为一种基础数据结构,这里仅仅对概念性知识进行简略概括,主要进行讲解二叉树的前中后序遍历,节点个数,叶子节点个数,二叉树高度。 二,概念及性质 结点的度:一个结点…

一,引言

二叉树作为一种基础数据结构,这里仅仅对概念性知识进行简略概括,主要进行讲解二叉树的前中后序遍历,节点个数,叶子节点个数,二叉树高度。

二,概念及性质

结点的度:一个结点含有的子树的个数称为该结点的度; 如上图:A的为 6

叶结点或终端结点:度为0的结点称为叶结点; 如上图:B、C、H、I...等结点为叶结点

双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点; 如上图:A是B的父结点.

孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点; 如上图:B是A的孩子结点

树的度:一棵树中,最大的结点的度称为树的度; 如上图:树的度为6。

这里主要几个常用的进行点一下。

还有一些相对重要的性质:

1. 若规定根结点的层数为1,则一棵非空二叉树的第i层上最多有2^(i-1) 个结点

2. 若规定根结点的层数为1,则深度为h的二叉树的最大结点数是2^h-1;

3. 对任何一棵二叉树, 如果度为0其叶结点个数为n0,, 度为2的分支结点个数为n2,n0 = n2 +1;

三,前中后序遍历

1,前序遍历:


前序遍历:根-->左子树-->右子树,注意是每一个子树都进行这个顺序。

 首先是(1)作为整个二叉树的根,先进行遍历之后是(2),(2)作为左子树的根,遍历左子树(4),(4)作为2左子树的根,左子树为空,右子树(6)。此时2的左子树结束,走右子树(5)。

此时1的左子树走完,走右子树(3)。

总结:1-->2-->4-->6-->5-->3 。

展开图:

代码实现:

void BinaryTreePrevOrder(BTNode* root)
{if (root == NULL){return;}printf("%d", root->_data);BinaryTreePrevOrder(root->_left);BinaryTreePrevOrder(root->_right);}

2,中序遍历

中序遍历:左子树-->根-->右子树,每个子树都按这个方式遍历。


 首先1作为根,走左子树,2作为新的根继续找左子树4,4作为根左子树为空继续走根节点(4),右子树(6),2作为根节点左子树走完,走根(2)进而右子树(5),1的左子树走完继续走根(1),右子树(3)。

总结:4-->6-->2-->5-->1-->3.

展开图:

 

每一个框架一个递归循环。

代码实现:

void BinaryTreeInOrder(BTNode* root)
{if (root == NULL){return;}BinaryTreePrevOrder(root->_left);printf("%d", root->_data);BinaryTreePrevOrder(root->_right);}

 3,后序遍历:


后序遍历:左子树-->右子树-->根,每一个子树 都按照这个顺序进行递归。

首先1作为根,左子树2,2作为根进行走左子树4,4同样作为根走左子树,左子树为空,走右子树(6),进而走根(4),此时2的左子树完毕,走右子树(5),进而走根(2),1的左子树完毕,走右子树(3),最后走根(1)。

总结:6-->4-->5-->2-->3-->1。

代码实现:
 

void BinaryTreePostOrder(BTNode* root)
{if (root == NULL){return;}BinaryTreePrevOrder(root->_left);BinaryTreePrevOrder(root->_right);printf("%d", root->_data);
}

四,节点个数

求该二叉树节点的个数也就是说有多少个节点。

 

 代码思路:

每次经过一个节点数量加一,总节点个数 = 左节点个数 + 右节点个数。

代码实现:
 

int BinaryTreeSize(BTNode* root)
{if (root == NULL){return 0;}return BinaryTreeSize(root->_left) + BinaryTreeSize(root->_right) + 1;
}

五,叶子节点个数

 

代码思路:
当该节点的左孩子和右孩子同时为空时,则该节点为叶子节点。将整个二叉树遍历一遍满足加一,不满足就继续走递归。

int BinaryTreeLeafSize(BTNode* root)
{if (root == NULL){return 0;}if (root->_left == NULL && root->_right == NULL){return 1;}return BinaryTreeSize(root->_left) + BinaryTreeSize(root->_right);
}

六,二叉树高度

分支最长的为二叉树高度,总的来说就是返回左子树和右子树的较大值。

代码实现:

int  BinaryTreeTall(BTNode* root)
{if (root == NULL){return 0;}int a = BinaryTreeTall(root->_left);int b = BinaryTreeTall(root->_right);return a > b ? BinaryTreeTall(root->_left) + 1 : BinaryTreeTall(root->_right) + 1;
}

这个相对来说比较复杂,通过变量记录左孩子和右孩子的大小,之后比较这个的大小,大的数据进行加1操作。进而进行比较,依次往复。以这个为例子画一些递归展开图。

如图以下面二叉树为例:

 

没有地方了,右子树和左子树的方法相同,在递归的学习中不理解就可以画递归展开图。

七,总结:

在递归的学习中只要不懂就画递归展开图,很有助于对递归的理解。 

http://www.dtcms.com/wzjs/832189.html

相关文章:

  • 天津专门做网站的公司的电话吕梁网站开发
  • 一个完整的网站怎么做深圳app开发价格
  • 利辛网站建设网站升级维护中页面
  • 自己建网站有什么用什么网站是vue做的
  • 济南做企业网站的公司网站建设策划书附录
  • 娱乐网站设计与实现自建网站做外贸谷歌推广
  • 手机网站外链做网站傻瓜软件
  • wordpress下拉seo短视频网页入口引流下载
  • 淮南建设厅网站网站和网页不同吗
  • 网站管理端怎么做诚聘网站开发人员
  • 现在流行什么做网站建网站服务器
  • 常用网站域名建设银行网站买手机
  • 新闻类网站怎么建设wordpress主题删除失败
  • 静态网站可以做留言板手机网站模版php源码
  • 金马国旅网站建设分析重庆企业品牌网站建设
  • 郑州市网站阿里培训网站建设
  • 新丰县建设局网站哪家公司产品设计的好
  • 莒县网站制作公司设计发明的网站
  • 美食网站的设计与制作代码深圳电器公司怎么样
  • 宁波网站建设招聘网公司网站开发费进什么费用
  • 百度索引量和网站排名个人网站成品
  • 东莞市网站建设品牌黑科技引流工具
  • python做网站比php好做手机网站多少钱
  • 网站的栏目设计怎么做免费自动网页生成器
  • 山西响应式网站制作安阳区号码
  • 网站开发语言一般是用什么广东省住房建设部网站
  • 华夏名网vps免费网站管理助手小时的网站建设
  • 建立个公司网站网站优化分析软件
  • 网站建设实训心得软件设计师中级含金量
  • 如何注册公司网站域名电商app排名300