数据结构——树的概念学习

本文详细介绍了树的基本概念,包括树的定义、术语和度量。接着,深入探讨了二叉树的类型,如完全二叉树、满二叉树和完美二叉树,并解释了二叉树的存储方式和遍历方法。此外,文章还讨论了二叉搜索树、平衡二叉树(AVL树)、堆和哈夫曼树,展示了它们在数据结构和算法中的重要应用。
一、树的概念学习

树是n个节点构成的有限集合。当n=0时,称为空树。若n>0,每个树都有一个根节点。
1、树的子树是不相交的。
2、除了根节点外,每一个节点有且仅有一个父节点。
3、一棵n个节点的树有n-1条边。

树的常用术语:
1、节点的度(Degree): 节点的子树个数。
2、树的度:树的所有节点中最大的度数。
3、叶节点(Leaf):度为0的节点。
4、父节点(Parent):有子树的节点是其子树的根节点的父节点。
5、子节点(Child):也称孩子节点。
6、兄弟节点(sibling):两个节点具有相同的父节点。
7、路径和路径长度:从父结点到某个子节点的路径,用边相连。路径所包含边的个数为路径长度。
8、节点的层次(Level) :规定根节点在一层,其他任一节点的层数是其父节点的层数加一。
9、树的深度(Depth):树中所有节点中的最大层次是这棵树的深度。

二、二叉树(Binary Tree)

一个有穷节点的集合。若不为空,则它是由根节点和称为其左子树和右子树的两个不相交的二叉树构成。每个节点最多拥有两个子节点,左子树和右子树是有顺序的不能任意颠倒。
1、完美二叉树
一个深度为k(>=-1)且有2^(k+1) - 1个结点的二叉树称为完美二叉树。
在这里插入图片描述
2、完全二叉树
完全二叉树从根结点到倒数第二层满足完美二叉树,最后一层可以不完全填充,其叶子结点都靠左对齐。
在这里插入图片描述
3、满二叉树
所有非叶子结点的度都是2。
在这里插入图片描述

三、二叉树的重要概念

1、一个二叉树的第i层的最大结点数为:2的i-1次方,i>=1。
2、深度为k的二叉树最大结点总数为:2的k次方 - 1,i>=1。
3、对于任何非空二叉树,n0表示叶结点的个数,n2表示度为2的非叶结点个数,则一定满足:n0 = n2 + 1。
4、所有结点个数n = n0+n1+n2。

四、二叉树的存储方式

1、顺序存储(用数组表示)
在这里插入图片描述
2、链表存储(节省空间)
在这里插入图片描述

五、二叉树的遍历()

1、先序遍历
(1)先访问根结点,再先序遍历左子树,最后遍历右子树。
在这里插入图片描述
先序遍历结果:ABDFECGHI

//前序遍历
void preOrder(int r) 
{
   
   
	if(r != Null){
   
   
		cout<<r<<" "
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值