码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构学习——树的基本分类

时间:2015-03-30 09:34:06      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:数据结构   二叉树      

自学数据结构已经很久了,使用的教材是《数据结构与算法分析——C语言描述》。现在回过头来再看一遍此书,重新梳理一下数据结构的相关知识。

以下是摘自维基百科的一些树的基本分类:

    • 无序树:树中任意节点的子节点之间没有顺序关系,这种树称为无序树,也称为自由树
    • 有序树:树中任意节点的子节点之间有顺序关系,这种树称为有序树;
      • 二叉树:每个节点最多含有两个子树的树称为二叉树;
        • 完全二叉树:对于一颗二叉树,假设其深度为d(d>1)。除了第d层外,其它各层的节点数目均已达最大值,且第d层所有节点从左向右连续地紧密排列,这样的二叉树被称为完全二叉树;
        • 满二叉树:对于上述的完全二叉树,如果去掉其第d层的所有节点,那么剩下的部分就构成一个满二叉树(此时该满二叉树的深度为d-1);
      • 霍夫曼树带权路径最短的二叉树称为哈夫曼树或最优二叉树;
      • B树
以下是该书中还涉及到的一些树的基本概念:

表达式树:树叶是操作数,如常量或变量。其他的节点是操作符。

二叉查找树:对于树中的每个节点X,它的左子树中所有关键字值小于X的关键字值,它的右子树中所有关键字值大于X的关键字值。

AVL树:每个节点的左子树和右子树的高度最多差1的二叉查找树。

伸展树:它保证从空树开始任意连续M次对树的操作最多花费O(M*logN)时间。

B-树(引自百度百科)一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树。它或者是空树,或者是满足下列性质的树:

1、根结点至少有两个子女;
2、每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 <= j <= m - 1;
3、除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故内部子树个数 k 满足:┌m/2┐ <= k <= m ;
4、所有的叶子结点都位于同一层。
(知识点:三种树的遍历方式——先序遍历,中序遍历,后序遍历)
备注:┌M/2┐是向上取整,即取与结果最接近的比结果大的整数,┌3/2┐=2;
    └M/2┘是向下取整,即取与结果最接近的比结果小的整数,└3/2┘=1.

Trie树又称单词查找树,字典树。根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串; 每个节点的所有子节点包含的字符都不相同。(在刷ACM题学习到的)

关于三种遍历树的方法做一个简单的总结:

先序遍历(前缀表达式):打印顺序:节点、左子树、右子树。

中序遍历(中缀表达式):打印顺序:左子树、节点、右子树。

后序遍历(后缀表达式):打印顺序:左子树、右子树、节点。





数据结构学习——树的基本分类

标签:数据结构   二叉树      

原文地址:http://blog.csdn.net/u010275850/article/details/44730373

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!