数据结构学习——树的基本分类
来源:互联网 发布:哪个导航软件最好用 编辑:程序博客网 时间:2024/06/05 14:40
自学数据结构已经很久了,使用的教材是《数据结构与算法分析——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路搜索树。它或者是空树,或者是满足下列性质的树:
└M/2┘是向下取整,即取与结果最接近的比结果小的整数,└3/2┘=1.
Trie树:又称单词查找树,字典树。根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串; 每个节点的所有子节点包含的字符都不相同。(在刷ACM题学习到的)
关于三种遍历树的方法做一个简单的总结:
先序遍历(前缀表达式):打印顺序:节点、左子树、右子树。(根左右)
中序遍历(中缀表达式):打印顺序:左子树、节点、右子树。(左根右)
后序遍历(后缀表达式):打印顺序:左子树、右子树、节点。(左右根)
例如这样的一棵二叉查找树,其中序遍历的结果就是:10 12 15 18 20 25 30
先序遍历的结果就是:20 15 10 12 18 25 30
后序遍历的结果就是:12 10 18 15 30 25 20
只要严格按照他们的打印顺序打印出来即可。
- 数据结构学习——树的基本分类
- 数据结构学习——链表的基本概念和分类
- 数据结构学习-二叉树的基本运算
- 数据结构学习记录-树的基本术语
- 数据结构——树的基本运算
- 数据结构—基本树的操作小结
- OpenCV学习——基本数据结构
- Nginx学习笔记 —— 基本数据结构
- 【算法学习】——基本数据结构
- 基本数据结构——树
- 数据结构——二叉树的基本操作
- 数据结构实验十一——树的基本操作
- 数据结构实验2——二叉树的基本操作
- 数据结构实践——B-树的基本操作
- 数据结构复习——二叉树的几个基本操作
- 数据结构——二叉树的基本操作
- 数据结构——二叉树的基本操作
- 数据结构复习整理——二叉树的基本操作
- kruskal 【MST】
- js date 时间初始化
- CSS3 DIY浏览器滚动条样式
- 2015NCHU第一届ACM新生选拔赛J题题解
- Greenplum中定义数据库对象之创建与管理数据库
- 数据结构学习——树的基本分类
- Textons介绍
- Java Socket编程 文件传输(客户端从服务器下载一个文件)
- Memcache 优化建议
- Java JVM
- public,protected,private
- 全局变量、有效域、命名空间
- 数字hash _ 熟练掌握数组当作链表来用的技能
- Linux程序设计(Linux shell编程十四)