数据结构 树、森林、二叉树、哈夫曼树

7.7、二叉树、树、森林

定义树可以使用,孩子兄弟表示法,做指针表示孩子,右指针表示树

typedef struct CSNode{
    ElemType data;
    struct CSNode *firstchilde,*nextsibling;//第一个为孩子,第二个为兄弟
}CSNOde,*CSTree;

二叉树和树的转换

二叉树和森林的转换

先根遍历

树的先根遍历和对应孩子兄弟二叉树的先序遍历是相同的

图035:

先根遍历:A B D E C F G H I

对应二叉树的先序遍历:A B D E C F G H I

后根遍历

树的后根遍历和对应孩子兄弟二叉树的中序遍历是相同的

图035:

后根遍历:D B E F C H G I A

对应二叉树的中序遍历:D B E F C H G I A

层次遍历

图035:

层次遍历:A B E C G I D F H

先根遍历和后根遍历:称为深度优先遍历

层次遍历:称为广度优先遍历

森林 孩子兄弟二叉树
先根遍历 先序遍历 先序遍历
后根遍历 中序遍历 中序遍历

森林的先序遍历:每颗树的先根遍历 组合起来(或者转化为孩子兄弟二叉树的先序遍历)

森林的中序遍历:每颗树的后根遍历 组合起来(或者转化外孩子兄弟二叉树的中序遍历)

7.10、哈夫曼树

结点的权:有某种现实含义的数值(如:表示结点的重要性等)

结点的带权路径长度:从树的根到该结点的路径长度(经过的边数)与该结点的权值的乘积

树的带权路径长度:树中所有叶结点的带权路径长度之和(WPL,Weighted Path Length)

在含有n个带权叶结点的二叉树中,其中带权路径长度(WPL)最小的二叉树称为哈夫曼树,也称为最优二叉树

哈夫曼编码例题:

posted @ 2022-11-01 22:35  水三丫  阅读(80)  评论(0编辑  收藏  举报