【数据结构】树和二叉树

 树


       树是一种典型的非线性数据结构,它能够很好地应用于描述分支和层次特性的数据集合,是由一个或多个结点组成的有限集合T,一棵树至少有一个结点。

  

       树的度, 一个结点的子树数目就是该结点的“度”,在这个结点下面直接与这个结点连着的结点数目就是这个结点的度。一颗数的度数等于这颗树中各结点度的最大值。


       树的层次,根结点层次为1,往下依次加1。


       树的遍历,前序遍历(根左右)、后序遍历(左右根)、层次遍历。


二叉树


       二叉树是一个有限的结点集合,该集合或者为空,或者由一个根结点及其两颗互不相交的左右二叉子树所组成。每个结点的子结点不可以超过两个。


       满二叉树:除最后一层无任何结点外,每一层上的所有结点都有两个子结点二叉树。


       完全二叉树:只有最下面的两层结点度能够小于2,且最下层的结点都集中在该层最左边的若干位置的二叉树。


       二叉树的遍历:前序遍历(根左右)、中序遍历(左根右)、后序遍历(左右根)。


哈夫曼树


        树的路径长度,是从树根到树中每一个结点的路径长度之和,在结点数目相同的二叉树中,完全二叉树的路径长度最短。


       ,在一些应用中会赋予树中结点一个有意义的实数,这个数字就称为权。


       带权的路径长度,结点到树根之间的路径长度与该结点上权的乘积称为结点的带权路径长度。


        在权值相同的n个叶子结点构成的所有二叉树中,带权路径长度最小的二叉树,称为最优二叉树,也称为哈夫曼树。构造哈夫曼树方法:每次都是选用最小权值得两个二叉树进行合并,使用的是贪婪法。


         之前总是搞不清楚这些概念,自己写一遍,心里就清楚多了,希望对你也有帮助。

相关文章

【啊哈!算法】算法3:最常用的排序——快速排序       ...
匿名组 这里可能用到几个不同的分组构造。通过括号内围绕的正...
选择排序:从数组的起始位置处开始,把第一个元素与数组中其...
public struct Pqitem { public int priority; ...
在编写正则表达式的时候,经常会向要向正则表达式添加数量型...
来自:http://blog.csdn.net/morewindows/article/details/6...