二叉树的性质
- 在二叉树的第iii层上至多有2i−12^{i-1}2i−1个结点(i≥1)(i \geq 1)(i≥1)。
- 深度为kkk的二叉树至多有2k−12^{k}-12k−1个结点(k≥1)(k\geq 1)(k≥1)。
- 对任何一棵二叉树TTT,如果其终端结点数为n0n_0n0,度为222的结点数为n2n_2n2,则n0=n2+1n_0=n_2+1n0=n2+1。
- 具有nnn个结点的完全二叉树的深度为【log2n】+1【log_2n】+1【log2n】+1,“【】”“【】”“【】”表示向下取整。
- nnn个结点的完全二叉树按层序编号,对任意结点iii有:
a. 如果i=1i=1i=1,则结点iii是二叉树的根,无双亲;如果i>1i>1i>1,则其双亲是结点【i/2】【i/2】【i/2】。
b. 如果2i>n2i>n2i>n,则结点iii无左孩子;否则其左孩子是结点2i2i2i。
c. 如果2i+1>n2i+1>n2i+1>n,则结点iii无右孩子;否则其右孩子是结点2i+12i+12i+1。

遍历二叉树
前序遍历
void PreOrder(BiTree T){
if(T==NULL)
return;
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
中序遍历
void InOrder(BiTree T){
if(T==NULL)
return;
PreOrder(T->lchild);
printf("%c",T->data);
PreOrder(T->rchild);
}
后序遍历
void InOrder(BiTree T){
if(T==NULL)
return;
PreOrder(T->lchild);
PreOrder(T->rchild);
printf("%c",T->data);
}
推导遍历结果
已知一棵二叉树的前序遍历为ABCDEF,中序遍历为CBAEDF,求后序遍历?
由前序遍历得到根节点为A,由中序遍历得到CB为左子树,EDF为右子树。
前序中B在前,故B为C的父结点;中序中C在前,故C为B左孩子。同理,D为E、F父结点,E为D左孩子,F为D右孩子。此时二叉树已经还原了,其后序遍历为:CBEFDA。
如下两种情况二下叉树唯一确定:
- 已知前序和中序
- 已知后序和中序
哈夫曼树
2,3,6,7,10,19,21,32构造哈夫曼树:
- 排序
- 去两最小值相加,相加后的序列排序
- 再取两最小值相加,再排序…
- 直到只剩下一个数

哈夫曼编码
对“BADCADFEED”进行哈夫曼编码:

| 字母 | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 二进制 | 01 | 1001 | 101 | 00 | 11 | 1000 |
“BADCADFEED”编码后为:1001010010101001000111100
二叉树顺序结构实现
#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "math.h"
#include "time.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 100 /* 存储空间初始分配量 */
#define MAX_TREE_SIZE 100 /* 二叉树的最大结点数 */
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int TElemType; /* 树结点的数据类型,目前暂定为整型 */
typedef TElemType SqBiTree[MAX_TREE_SIZE]; /* 0号单元存储根结点 */
typedef struct
{
int level, order; /* 结点的层,本层序号(按满二叉树计算) */
}Position;
TElemType Nil = 0; /* 设整型以0为空 */
Status visit(TElemType c)
{
printf("%d ", c);
return OK;
}
/* 构造空二叉树T。因为T是固定数组,不会改变,故不需要& */
Status InitBiTree(SqBiTree T)

本文详细介绍了二叉树的性质,包括层序和深度关系,以及如何根据遍历结果推导二叉树结构。讨论了前序、中序、后序遍历,并提供了解决已知遍历结果重建二叉树的方法。此外,还讲解了哈夫曼树的构造和哈夫曼编码的生成过程,以及二叉树的顺序和链式结构实现,最后提到了线索二叉树的概念。
最低0.47元/天 解锁文章
1276

被折叠的 条评论
为什么被折叠?



