栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

二叉树的基本概念与例题(一学就会)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二叉树的基本概念与例题(一学就会)

今天我们来讲一下二叉树的概念和例题

要知道什么是二叉树,就先要知道什么是树:

我们来看一下树的详细定义:

        树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:

        每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点。

可能这不是很好理解,我们可以来看一个例子:

 我们来可以下这个树,就可以分析一下上面的那几句话了,首先,上图是一个集合

我们把它标上号,这棵树就如下图:

我们称{B,C}是A的儿子节点,{D,E,F}是B的儿子节点,那么:

我们称A是{B,C}的父节点,B是{D,E,F}的父节点。

然而,我们做出一个表出来,来方便观察每个节点的父节点:

节点ABCDEF
父节点×AABBB

 

 

然后呢,你会发现,A没有父节点,所以我们称A为整棵树的根节点。

所以呢,到此为止,我们在上面那句话就解释完毕了。

我们来讲一下树的”度“的这个概念,其实树的度就是一个节点的儿子个数。

那么,言归正传,其实,二叉树就是每个节点的”度“最高为2的树,我们称它为”二叉树“。

我们现在来了解一下二叉树的4个性质:

 二叉树的四个性质(重点):         第一个性质:

                在非空二叉树中,第i层的总节点数不超过,

                这个还是比较好证明:就当第i层都是慢的节点,

                i=1,总节点数是1

                i=2,总节点数是2

                i=3,总节点数是4

                以此类推所以我们得出:在非空二叉树中,第i层的总节点数不超过,

         第二个性质:

                深度为h的二叉树最多有个节点,最少有h个节点。

                最少的很容易想到,在这里不与证明,最大就有一点难,需要一些数学基础

                到深度为h,其实就是,公比为2

                所以就是:,带入:

                也就是,我们知道,所以:

                深度为h的二叉树最多有个节点,最少有h个节点。

        第三个性质:

                对于任意一棵二叉树,如果其叶节点数为a,读书为2的节点数为b,那么a=b+1

        第四个性质:

                具有n个节点的完全二叉树的深度为,此性质跟第一个类似,在此不再介绍

我劝你们去休息一下,马上又是重点(看没看到下面的东西在上面的基础上还加了个“难字”)

二叉树的遍历(重难点):

我在这里画一棵二叉树:

 

 我们先来了解一下先序遍历,他的方法是根、左、右,所以先序遍历是:ABDCEGFH

 我们再来了解一下中序遍历,他的方法是左、根、右,所以中序遍历是:DBAGECFH

 我们再来了解一下后序遍历,他的方法是左、右、根,所以后序遍历是:CBGEHFCA

讲的不是很详细,希望谅解一下,建议去看一下这个视频:三分钟教会你遍历二叉树!

时间很短啊,也十分详细,这里上一下二叉树前、中、后序的遍历函数

先序、中序、后序遍历的代码:

void qian(int x){
	if(x>0){
		cout<0){
		zhong(tree[x].left);
		cout<0){
		hou(tree[x].left);
		hou(tree[x].right);
		cout< 

也就这样,自己看吧……

接下来,是二叉树的经典例题,可以参考一下我的这篇博文:找树根和孩子

写的也是十分详细,好了,今天就到此为止吧!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008740.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号