算法学习 - 树的一些解释
来源:互联网 发布:中国最大网络拍卖平台 编辑:程序博客网 时间:2024/05/16 08:58
树的解释
树是ADT里面很经典的数据结构了,应用太多了,相对于链表的线性访问时间,O(n)。树的大部分操作的平均运行时间都是为O(logN)。
- 树的概念
树有几种方式定义,一种是递归,若树不为空,则一棵树是由根(root)的节点r和0个或者多个非空树组成。N个节点的树,有N-1个边。没有儿子的节点称为叶子(leaf). 对于任意节点N(i),它的深度为从根节点到N(i)的唯一路径长度。如果存在N(1)到N(2)的路径,那么N(1)是N(2)的祖先。如果N(1)不等于N(2),那么就称为真祖先。N(2)为真后裔。
树的实现
树的代码实现有多种代码。首先是第一儿子/下一兄弟表示方法。
typedef struct TreeNode * PtrToNode;
struct TreeNode
{
ElementType element;
PtrToNode firstChild;
PtrToNode nextBrother;
};
以上就是他的实现方法了。其实这种表示是一个节点存放了它的第一个孩子,还有它下一个兄弟,这样下一层的节点和本层的节点都能够访问了。
树的遍历
树的遍历有三种:
- 先序遍历
- 中序遍历
- 后序遍历
先序遍历是从头结点依次向下遍历,自上至下,自左之右。
中序遍历是先遍历左节点,然后父节点,然后右节点,再向上遍历。
后序遍历是先遍历左右子节点,然后向上遍历。
上面这二叉树。
先序遍历:1 2 3 4 5 6 7
中序遍历: 4 2 6 7 5 1 3
后序遍历: 4 6 7 5 2 3 1
树的一些分类
- 普通树
- 二叉树
- 二叉查找树
- 平衡二叉树
- 伸展树
- B-树
0 0
- 算法学习 - 树的一些解释
- 收集一些算法解释的比较好的博客
- 对一些感觉比较好的算法解释的收藏
- 机器学习的一些算法
- 学习算法的算法 神经编码器-解释器
- CDirectScreenAccess 的一些解释
- 一些名词的解释
- JFreeChart 的一些解释
- CDirectScreenAccess 的一些解释
- 功放的一些解释
- 谱聚类的一些解释
- 一些名词的解释
- Comsumer的一些解释
- JNI的一些解释
- 关于如何解释机器学习的一些方法
- 关于如何解释机器学习的一些方法
- 最短路径之Dijkstra算法(摘自算法基础)【一些简单的解释,没有代码】
- 算法学习 - Gray Code(格雷码)的解释和c++实现
- USB协议学习1
- Linux之strace命令
- NotificationManager和Notification的使用总结
- Oracle 死锁的检测查询及处理
- 数据结构--数组和广义表--以三元组顺序表存储方式的矩阵的一般转置和快速转置
- 算法学习 - 树的一些解释
- Pots
- c语言思想13
- HDU 4162 Shape Number(最小表示法)
- 设计模式实现(九)--- 建造者模式(Builder)
- 约数个数定理
- 二叉搜索树的后序遍历序列
- 数据挖掘方法案例介绍
- HDU 2521 反素数【打表】