树的一些知识点总结
2016-11-04 21:13
190 查看
1. 树:节点的度(定义:节点所拥有的子树的棵树,也就是节点下有几个分叉。)
层次(约定根节点所在层次为1) 高度或深度(树中节点的最大层数) 直径长度(为高度-1)
2. 二叉树的性质:1)如果根节点的层次为1,那么二叉树的第i层最多有2^(i - 1)次方个节点; 2)在高度为h的二叉树中,最多有2^h – 1 (h >= 0)个节点; 3)设一棵二叉树的叶子节点的个数为N0,2度节点个数为N2,则N0=N2+1.
3. 满二叉树:节点数达到最多,2^h – 1个节点。
4. 完全二叉树:从上往下,从左往右连续的节点存在即可。一棵具有n个节点的完全二叉树,其高度h= log2(n) (下取整) + 1。
5. 哈夫曼树:使用频率较高的数据其编码较短,使用频率较低的数据其编码较长。变长编码方案必须满足:任何一个字符的编码都不是另一个字符编码的前缀,用来保证译码的唯一性。哈夫曼树是带权外路径程度最小的二叉树,也称为最优二叉树。
6. 二叉树的外路劲长度:从根节点到所有叶子节点的路径长度之和称为该二叉树的外路径长度。完全二叉树的外路径长度最短。
7. 表示编码的二叉树中只有2度节点和叶子节点,没有1度节点!
8. 二叉树的带权外路径长度:各个叶子节点乘上 到该叶子节点的路径长度 之和。
9. 构造哈夫曼树算法:给定了权值的集合,用这些权值来建立一棵哈夫曼树。总是从权值集合中,找出当前最小的两个权值,左节点权值小于右节点权值,作为两个叶子,然后依次往上,从小到大将权值加入。
10. 二叉树的节点个数:n = 0 * n0 + 1 * n1 + 2 * n2 + 1 (n0: 叶子节点 n1:1度节点 n2:2度节点) n = n0 + n1 + n2
11. 二叉树转换为树和森林。若二叉树非空,则二叉树根及其左子树为第一棵二叉树形式,二叉树根的右子树又可以看做一个由森林转换后的二叉树,应用同样的方法,直到最后产生一棵没有右子树的二叉树为止,这样就得到一个森林。为了进一步得到树,可用树的二叉链表表示逆方法,即结点的右子树的根、右子树的右子树的根......找出原本是同一个双亲的兄弟。二叉树转换为树或森林是唯一的。
12. 二叉树的高度深度
层 ------高度/深度,根的高度为1,应该是指这棵树的总高度 层i>= 1从1开始,根所在层次为1
13. 若度为m的哈夫曼树中,其叶结点个数为n,则非叶结点的个数为[(n-1)/(m-1)] 设有x个非叶子节点,那么按照总节点相等原则可以得出:m*x+1=n+x,所以求出x=[(n-1)/(m-1)]
14. 二叉树与森林树之间的转化:http://wenku.baidu.com/view/f73f27fb0242a8956bece411.html
http://wenku.baidu.com/view/3ea7a84ec850ad02de80410f.html (看这个!二叉树转化为树的话,)
15. 二叉排序树:插入操作的插入节点的位置是唯一的。时间复杂度在O(log2(N)) - O(N)之间。
16. 平衡二叉树(B-Tree):节点的平衡因子 = 右子树的高度 – 左子树的高度;左右子树的高度之差的绝对值不超过1。
17. 平衡二叉树的插入删除都要调整二叉树,使之保持平衡状态。
18. 当前节点为 I ,那么这个节点的右节点为 I*2 + 1 ,这要保证这棵树为完全二叉树才能确定!!!
19. 哈夫曼树:不是随便将当前比较小的加权到树中,而是当前森林中的最小的两棵树!!!而且哈夫曼树是没有一度节点的!!!
20. 一个M叉的树,有N个节点,那么空指针有 (M-1)* N + 1。
21. 一个树形的叶结点,在前序遍历和后序遍历下,皆以相同的相对位置出现!
22. 后根遍历仍需要栈的支持:后序遍历要稍微复杂一点点,在前序和中序遍历的程序中,当我们准备进入根结点的右子树时,根结点就被扔出栈外了。但在后序遍历时,我们仍需保留它,直到右子树处理完毕。S
23. 树和二叉树:采用二叉链表作为存储结构, 树的前序遍历和其相应的二叉树的前序遍历的结果是一样的。(那么其他遍历方式呢?树的前序遍历对应二叉树的前序遍历,树的后序遍历和二叉树的中序遍历一致注意!!!从二叉树到树的转变:不论是根及节点的左节点上的所有右孩子,还是右节点上的所有右孩子,都要跟根节点相连,再抹去之前的右连接。)
24. 一棵具有N个结点的二叉树的前序序列和后序序列正好相反 ,则该二叉树一定满足该二叉树只有左子树或只有右子树,即该二叉树一定是一条链(二叉树的高度为N,高度等于结点数)
25. 平衡二叉树:平衡因子=H左子树-H右子树,即使插入结点后不改变原二叉树的平衡性,平衡因子也会改变。
26. 设F是一个森林,B是由F变换得到的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有n+1个
27. 一棵有n个节点的完全二叉树,其深度是 计算公式是 「log2n」+1 log里面是向下取整的
层次(约定根节点所在层次为1) 高度或深度(树中节点的最大层数) 直径长度(为高度-1)
2. 二叉树的性质:1)如果根节点的层次为1,那么二叉树的第i层最多有2^(i - 1)次方个节点; 2)在高度为h的二叉树中,最多有2^h – 1 (h >= 0)个节点; 3)设一棵二叉树的叶子节点的个数为N0,2度节点个数为N2,则N0=N2+1.
3. 满二叉树:节点数达到最多,2^h – 1个节点。
4. 完全二叉树:从上往下,从左往右连续的节点存在即可。一棵具有n个节点的完全二叉树,其高度h= log2(n) (下取整) + 1。
5. 哈夫曼树:使用频率较高的数据其编码较短,使用频率较低的数据其编码较长。变长编码方案必须满足:任何一个字符的编码都不是另一个字符编码的前缀,用来保证译码的唯一性。哈夫曼树是带权外路径程度最小的二叉树,也称为最优二叉树。
6. 二叉树的外路劲长度:从根节点到所有叶子节点的路径长度之和称为该二叉树的外路径长度。完全二叉树的外路径长度最短。
7. 表示编码的二叉树中只有2度节点和叶子节点,没有1度节点!
8. 二叉树的带权外路径长度:各个叶子节点乘上 到该叶子节点的路径长度 之和。
9. 构造哈夫曼树算法:给定了权值的集合,用这些权值来建立一棵哈夫曼树。总是从权值集合中,找出当前最小的两个权值,左节点权值小于右节点权值,作为两个叶子,然后依次往上,从小到大将权值加入。
10. 二叉树的节点个数:n = 0 * n0 + 1 * n1 + 2 * n2 + 1 (n0: 叶子节点 n1:1度节点 n2:2度节点) n = n0 + n1 + n2
11. 二叉树转换为树和森林。若二叉树非空,则二叉树根及其左子树为第一棵二叉树形式,二叉树根的右子树又可以看做一个由森林转换后的二叉树,应用同样的方法,直到最后产生一棵没有右子树的二叉树为止,这样就得到一个森林。为了进一步得到树,可用树的二叉链表表示逆方法,即结点的右子树的根、右子树的右子树的根......找出原本是同一个双亲的兄弟。二叉树转换为树或森林是唯一的。
12. 二叉树的高度深度
层 ------高度/深度,根的高度为1,应该是指这棵树的总高度 层i>= 1从1开始,根所在层次为1
13. 若度为m的哈夫曼树中,其叶结点个数为n,则非叶结点的个数为[(n-1)/(m-1)] 设有x个非叶子节点,那么按照总节点相等原则可以得出:m*x+1=n+x,所以求出x=[(n-1)/(m-1)]
14. 二叉树与森林树之间的转化:http://wenku.baidu.com/view/f73f27fb0242a8956bece411.html
http://wenku.baidu.com/view/3ea7a84ec850ad02de80410f.html (看这个!二叉树转化为树的话,)
15. 二叉排序树:插入操作的插入节点的位置是唯一的。时间复杂度在O(log2(N)) - O(N)之间。
16. 平衡二叉树(B-Tree):节点的平衡因子 = 右子树的高度 – 左子树的高度;左右子树的高度之差的绝对值不超过1。
17. 平衡二叉树的插入删除都要调整二叉树,使之保持平衡状态。
18. 当前节点为 I ,那么这个节点的右节点为 I*2 + 1 ,这要保证这棵树为完全二叉树才能确定!!!
19. 哈夫曼树:不是随便将当前比较小的加权到树中,而是当前森林中的最小的两棵树!!!而且哈夫曼树是没有一度节点的!!!
20. 一个M叉的树,有N个节点,那么空指针有 (M-1)* N + 1。
21. 一个树形的叶结点,在前序遍历和后序遍历下,皆以相同的相对位置出现!
22. 后根遍历仍需要栈的支持:后序遍历要稍微复杂一点点,在前序和中序遍历的程序中,当我们准备进入根结点的右子树时,根结点就被扔出栈外了。但在后序遍历时,我们仍需保留它,直到右子树处理完毕。S
23. 树和二叉树:采用二叉链表作为存储结构, 树的前序遍历和其相应的二叉树的前序遍历的结果是一样的。(那么其他遍历方式呢?树的前序遍历对应二叉树的前序遍历,树的后序遍历和二叉树的中序遍历一致注意!!!从二叉树到树的转变:不论是根及节点的左节点上的所有右孩子,还是右节点上的所有右孩子,都要跟根节点相连,再抹去之前的右连接。)
24. 一棵具有N个结点的二叉树的前序序列和后序序列正好相反 ,则该二叉树一定满足该二叉树只有左子树或只有右子树,即该二叉树一定是一条链(二叉树的高度为N,高度等于结点数)
25. 平衡二叉树:平衡因子=H左子树-H右子树,即使插入结点后不改变原二叉树的平衡性,平衡因子也会改变。
26. 设F是一个森林,B是由F变换得到的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有n+1个
27. 一棵有n个节点的完全二叉树,其深度是 计算公式是 「log2n」+1 log里面是向下取整的
相关文章推荐
- 对java中一些关键的,容易迷惑的知识点的归纳总结
- 总结一下一些简单但是自己又不清楚的知识点(华为题目)
- 最近学习安卓中总结的一些知识点 复制代码
- 对匿名函数的一些知识点总结!
- 【黑马程序员】C#面向对象中一些知识点总结和备忘
- 关于java一些知识点的总结
- 最近看的一些关于数据结构和C++的面试知识点总结
- 一些cocos2d-x开发的知识点总结
- salesforce看pdf文档总结的一些小知识点
- PHP中最容易忘记的一些知识点总结
- 一些工作中用到的知识点总结
- 黑马程序员_sql一些知识点总结
- PHP的一些知识点总结
- Objective-C在IOS中的一些使用知识点总结
- PHP中最容易忘记的一些知识点总结
- 小知识点的一些总结
- c++模板的一些知识点总结
- iPhone 一些小知识点总结
- 一些知识点总结(HeapSort, MergeSort, QuickSort, PrefixTree, TopologicalSort)
- C++的一些知识点总结