满二叉树、完全二叉树、平衡二叉树、哈夫曼树
2016-05-21 22:16
323 查看
最近做各大公司的笔试题,发现二叉树这块考得还是比较多的。
在笔试中,我看到了一道选择题,问哈夫曼树是不是满二叉树、是不是完全二叉树?当时哪记得清,什么二叉树的概念全忘光了。。
下面特地做了总结。
满二叉树:除了叶节点外每一个结点都有左右子女且叶节点都处在最底层的二叉树。
这个满二叉树应该很好想象,就是一颗非常完美的树,除了叶节点其他节点都有两个孩子。
完全二叉树:只有最下面的两层结点度小于2,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。
也就是说,在满叉树的基础上,我在最底层从右往左删去若干节点,得到的都是完全二叉树。
所以说,满二叉树一定是完全二叉树,但是完全二叉树不一定是满二叉树
下面来看一个完全二叉树的例子:
平衡二叉树:又称为AVL树,它是一颗空树或它的左右两个子树的高度差的绝对值不超过1
哈夫曼树:带权路径长度达到最小的二叉树,也叫做最优二叉树。
注意到这里,哈夫曼树只是一棵最优二叉树,不一定是完全二叉树,也不一定是平衡二叉树。完全是八竿子打不着的事情,人家哈夫曼树不关注树的结构,只关注带权路径长度好吗。。
下面再说几点关于二叉树性质,对于解答笔试题中的小题目很有用。
1.对于一棵有着k层的二叉树,最多有节点个数为 2^k-1,最少有k个节点
2.对于第k层,最多有节点个数为 2^(k-1)个
3.对于一棵非空的二叉树,叶子节点数目总比度为2的节点数要多1
在笔试中,我看到了一道选择题,问哈夫曼树是不是满二叉树、是不是完全二叉树?当时哪记得清,什么二叉树的概念全忘光了。。
下面特地做了总结。
满二叉树:除了叶节点外每一个结点都有左右子女且叶节点都处在最底层的二叉树。
这个满二叉树应该很好想象,就是一颗非常完美的树,除了叶节点其他节点都有两个孩子。
完全二叉树:只有最下面的两层结点度小于2,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。
也就是说,在满叉树的基础上,我在最底层从右往左删去若干节点,得到的都是完全二叉树。
所以说,满二叉树一定是完全二叉树,但是完全二叉树不一定是满二叉树
下面来看一个完全二叉树的例子:
平衡二叉树:又称为AVL树,它是一颗空树或它的左右两个子树的高度差的绝对值不超过1
哈夫曼树:带权路径长度达到最小的二叉树,也叫做最优二叉树。
注意到这里,哈夫曼树只是一棵最优二叉树,不一定是完全二叉树,也不一定是平衡二叉树。完全是八竿子打不着的事情,人家哈夫曼树不关注树的结构,只关注带权路径长度好吗。。
下面再说几点关于二叉树性质,对于解答笔试题中的小题目很有用。
1.对于一棵有着k层的二叉树,最多有节点个数为 2^k-1,最少有k个节点
2.对于第k层,最多有节点个数为 2^(k-1)个
3.对于一棵非空的二叉树,叶子节点数目总比度为2的节点数要多1
相关文章推荐
- 数据库的锁机制
- 动态规划——problem g
- js中的forEach
- js中的forEach
- R语言-创建数据集
- Android PowerManagerService和PowerManager 源码分析
- k8s 部署
- 周易六十四卦——大畜卦
- 【Leetcode】Bitwise AND of Numbers Range
- 第四章 深入JSP技术
- hdu 5690 多种方法实现
- ubuntu下NTFS分区无法访问的问题
- tomcat端口占用问题
- 【Java基础】键盘录入Scanner类中的next()与nextLine()的问题
- CodeForces 246A. Buggy Sorting【思维】
- c++实验6-数组合并
- MVC过滤器详解
- microstation level2 0613
- Ubuntu下安装Pycharm
- Cocos2dx游戏引擎(3.x)----新的事件分发机制