数据结构之二叉树

本文介绍了树的基本概念和相关术语,重点讲解了二叉树的定义、性质,包括满二叉树和完全二叉树的区别,并详细阐述了链式二叉树的实现,包括前序、中序、后序遍历,以及计算二叉树节点数、叶子节点数、第K层节点数的方法。此外,还讨论了如何求树的高度和在二叉树中查找节点的策略。
摘要由CSDN通过智能技术生成

目录

1、树的概念

 2、树的相关概念

3、树的表示

4、二叉树

 5、二叉树的性质:

6、链式二叉树的实现

1、二叉树的遍历

2、计算二叉树结点的个数:

3、计算二叉树的叶子结点:

4、计算二叉树第K层结点的个数

5、求树的高度

6、二叉树的查找


1、树的概念

树是一种非线性的数据结构,它是由N个有限结点组成一个具有层次关系的集合。

因为该结构像一棵倒挂的树,所以称为树。

注意:在树形结构种,子树之间不能有交集。

 2、树的相关概念

这里只列举一些常用的概念,其它大家可以自行查找。

1)节点的度:一个节点含有的子树的个数称为节点的度。

2)叶节点:度为0的节点称为叶节点。

3)父节点:若一个节点含有子节点,则这个节点称为父节点。

4)子节点:一个节点含有的子树的根节点称为该节点的子节点。

5)树的度:一棵树中,最大节点的度称为树的度。

6)节的层次:从根开始定义起,根为第一层,根的子节点为第二层,依次类推。

7)树的高度:树中最大节点的层次。

3、树的表示

方式一:假设说明了数的度为N

struct TreeNode
{
	int data;
	struct TreeNode* subs[N];
};

缺点:

1、可能存在空间浪费。最大的度用完了,其它的度没有用完

2、没有限定树的度就比较麻烦。

方式二:双亲表示法:结构数组存储

一个存储数据,另一个存储父亲的下标。

struct TreeNode
{
	int parenti;
	int data;
};

struct TreeNode arr[10];

 A没有父亲节点,默认为-1,B的父亲是A,A的数组下标是0,C的父亲节点是A,A的数组下标是0,D的父亲节点是B,B的数组下标是1。

方式三:左孩子,右兄弟,最优表示法。

typedef int DataType;

struct Node
{
	struct Node* _firstchildl;
	struct Node* _pNextbrother;
	DataType _data;
};

4、二叉树

概念:度最大为2的树。

如下图所示:

 1)满二叉树:

一个二叉树,如果每一层的节点数都达到最大值,则这个二叉树就是满二叉树。

特点:

1、所有的叶子节点都在最后一层。

2、所有的分支节点都有两个孩子。 

3、假设树的高度是h的满二叉树,总共有2^h-1个节点。

一颗满二叉树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开拓的嚣张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值