300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 二叉树的基本概念与例题(一学就会)

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

时间:2023-01-01 06:05:43

相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

然后呢,你会发现,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<<tree[x].data<<" ";qian(tree[x].left);qian(tree[x].right);}}void zhong(int x){if(x>0){zhong(tree[x].left);cout<<tree[x].data<<" ";zhong(tree[x].right);}}void hou(int x){if(x>0){hou(tree[x].left);hou(tree[x].right);cout<<tree[x].data<<" ";}}

也就这样,自己看吧……

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。