【清明】二叉树

1.定义
二叉树: 一棵树,每个节点最多两个子节点(两颗子树),次序不可颠倒。

满二叉树:所有终端都在同一层,且非终端节点度数为2
//就是最后一层叶子节点满了

完全二叉树:除了最大层以外的部分是满二叉树,最大层所有节点左对齐,不空

2.性质
当前节点X 则:
父节点X / 2 左儿子(X <<1) 右儿子(X << 1 | 1)

非空二叉树第n层最多有2n1个元素
深度为n的二叉树最多有2n1个元素
满二叉树必最大

满二叉树是完全二叉树,完全二叉树不一定是满二叉树

完全二叉树中,没有左儿子的节点一定是叶子节点

满二叉树从最大层最右向左连续删除若干节点,还是完全二叉树

3.遍历
前序遍历:根 - 左儿子 - 右儿子
中序遍历:左儿子 - 根 -右儿子
后序遍历:左儿子 - 右儿子 - 根

可递归实现

4.相互求

(1)已知前序遍历中序遍历?
前序遍历出现的第一个节点,一定是根节点,设为R
中序遍历中,R左边的是它的左子树,右边的是它的右子树

前序遍历中的第二个节点,一定是R左子树的根,设为A
中序遍历中,A左边是它的左子树,右边是它的右子树

就这样一直循环,概括为:
1.定根定左右
2.左右各递归
3.画图写答案

(2)已知中序遍历后序遍历?
后序遍历中,最后一个节点一定是根节点,记为R
中序遍历中,R左边的是它的左子树,右边的是它的右子树

然后循环……和(1)一样了

5.哈夫曼树

哈夫曼树也是二叉树,那我写在一起好了

1952年由哈夫曼提出,是带权路径长度WPL最短的二叉树(最优二叉树)

构造?
对于n个有权值的点,每次选剩下的两棵根权值 最小的树合并成一棵新树
新树根权值 == 选的两棵树的根权值的和

路径长度PL?
从根到每个节点的路径长度(每条为1)的和,完全二叉树最短

带权路径长度WPL?
所有叶子节点的带权路径长度之和
即 该节点到根节点 路径长度 与 节点上权值 的 乘积 之和

哈夫曼编码?
原文映射成最短01串的方法
字母的使用频度:每个字母的出现次数
用频度为权值构造哈夫曼树,树枝标注0或1,叶子节点标注字母
分配码不是边长,是区分左右儿子,左儿子为0右儿子为1

编码原则?
n个节点的哈夫曼树有2n-1个节点,没有度为1的节点
编码从叶子到根,翻译从根到叶子

编码中任何一个字符编码不是另一个字符编码的前缀
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Loi_Shirley/article/details/78232321
个人分类: ===【清明】===
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭