二叉树的基本知识

前言

数据结构中的数就像它的名字一样,通过一个头节点进而分散出许多的叶子节点,而我们一般经常用到的是特殊的数,就是我们今天说到的二叉树,一个节点最多有两个叶子节点。


一、树是什么

像这张图一样,一个节点下有许多的子节点的就为树,但是这样的树意义不大,所以我们经常使用的是它的特殊形式二叉树,,那便是一个节点最多有两个叶子节点。

二、二叉树解释

1.二叉树的基本知识

二叉树我们需要知道的知识其中之一为:

高度:树的高度h,树的高度就最大层数。

叶子:度为零的节点,即没有叶子节点的节点。

度:一个节点含有子树的个数就为度。

树的度:最大的度就为树的度。

父子节点:如图A就相当于为B和C的父节点,B和C就为A的子节点。

兄弟节点:为同一个父节点,父节点的字节点互为兄弟节点,C就为B的兄弟节点。

根的层次:根的层次为1,那它的子节点层次就为2.

2.二叉树的种类

如果只是普通的二叉树实际中也没有太大的意义,我们主要用到的是两种特殊的二叉树,分别为满二叉树和完全二叉树。

这个便是满二叉树,最后一层已经没有多余的叶子节点。

 

这个是完全二叉树,最后一层还有剩余的节点,但是之前的节点一定是连续的才可以被称为完全二叉树。

公式进行计算

满二叉树的高度=为 :    h = log2(n+1)

完全二叉树的高度=为 :    h = log2(n)+1

满二叉树的节点个数为:n = 2^h-1

完全二叉树节点个数为:[2^(h-1),2^h-1]

3.二叉树的遍历

我们创建二叉树后,比较常用的三种遍历为前序遍历,中序遍历,后序遍历。

前序遍历是先根节点,左子树,右子树。

中序遍历是先左子树,根节点,右子树。

后序遍历是先左子树,右子树,根节点。

由此可以看出前中后序遍历主要的区别是和根节点有关。

我们一般使用递归的方式进行的。

举例一下前序遍历,遍历的结束条件就返回,由于前序遍历先经过根,所需现在根打印,然后进入左子树,最后找到NULL,进入右子树,同理找到NULL返回。递归完成后就是二叉树的前序遍历。其他两种遍历同理,只需改变根节点的位置即可。

void TreeFront(Tnode* ps)//前序遍历
{
	if (ps == NULL)
	{
		printf("NULL ");
		return;
	}
	printf("%d ", ps->data);
	TreeFront(ps->left);
	TreeFront(ps->right);
}

 


总结

我们在树的学习中主要学这种特殊的二叉树,二叉树就已经为一个有特殊构成的数据结构,感谢观看,如有错误欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值