目录
一、引言
✨欢迎来到二叉树知识的最后一节,本节我们将介绍有序二叉树的创建,查找以及哈夫曼树和哈夫曼编码,这在数据的存储、查找、传输领域都有很多的应用,话不多说,VS,启动!😆
二、有序二叉树的创建
在创建有序二叉树时,我们先要建立一个规则:数据比根节点大的放在右子树,数据比根节点小的放在左子树,比如要存放的数据依次为:
c , b , a , e , d
,那么c作为根节点,b
放在c
的左子树,a
放在b
的左子树,e
放在c
的右子树,d
放在e
的左子树(按ASCLL码的值)
在实际应用中,我们会先将数据按其权重递减排序,(权重可以理解为数据的常用程度或者重要程度),然后依次放入有序二叉树中,这样存放的数据在查找时非常方便
//逐字符创建有序二叉树
void Tree_Order_Creative(BinTree** T, char x)
{
if (*T == NULL) //若节点为空,为节点分配一个内存
{
*T = (BinTree*)malloc(sizeof(BinTree));
if (*T == NULL) //处理内存分配失败的情况
{
return;
}
else
{
(*T)->data = x;
(*T)->lchile = (*T)->rchile = NULL;
}
}
else
{
if (x > (*T)->data) //数据比根节点大,存储到右子树