摘要:
## 树的定义 树(Tree): n(n≥0)个结点构成的有限集合。 当n=0时,称为空树; 对于任一棵非空树(n> 0),它具备以下性质: - 树中有一个称为“根(Root)”的特殊结点,用 r 表示; - 其余结点可分为m(m>0)个互不相交的有限集T1,T2,... ,Tm,其中每个集合本身又 阅读全文
摘要:
## 二叉树的定义 二叉树T:一个有穷的结点集合。 - 这个集合可以为空 - 若不为空,则它是由根结点和称为其左子树TL和右子树TR的两个不相交的二叉树组成。 二叉树具体五种基本形态: - 空二叉树; - 只有根结点的二叉树; - 只有根结点和左子树TL的二叉树; - 只有根结点和右子树TR的二叉树 阅读全文
摘要:
## 先序、中序、后序遍历 | 遍历方式 | 描述 | | | | | 先序遍历 | 1. 访问根结点; 2. 遍历其左子树; 3. 遍历其右子树。 | | 中序遍历 | 1. 遍历其左子树; 2. 访问根结点; 3. 遍历其右子树。 | | 后序遍历 | 1. 遍历其右子树;; 2. 访问根结点; 阅读全文
摘要:
二叉搜索树(BST,Binary Search Tree),也称二叉排序树或二叉查找树 二叉搜索树:一棵二叉树,可以为空;如果不为空,满足以下性质: 1. 非空左子树的所有键值小于其根结点的键值 2. 非空右子树的所有键值大于其根结点的键值 3. 左、右子树都是二叉搜索树(递归定义) 二叉搜索树操作 阅读全文
摘要:
## 概念 “平衡因子(Balance Factor,简称BF): BF(T) = hL-hR, 其中hL和hR分别为T的左、右子树的高度。 平衡二叉树(Balanced Binary Tree)(AVL树) :空树,或者 任一结点左、右子树高度差的绝对值不超过1,即|BF(T) |≤ 1 **给定 阅读全文
摘要:
## 概念 优先队列(Priority Queue):特殊的“队列”,取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。 问题:如何组织优先队列? - 一般的数组、链表? - 有序的数组或者链表? - 二叉搜索树? AVL树? **堆的两个特性** - 结构性:**用数组 阅读全文
摘要:
## 概念 哈夫曼树(Huffman Tree) [参考之前整理的笔记](https://www.cnblogs.com/huangwenjie/p/13660756.html#autoid-h2-1-3-0) 解决的问题:如何根据结点不同的查找频率构造更有效的搜索树? 带权路径长度(WPL):设二 阅读全文
摘要:
## 集合的表示 - 集合运算:交、并、补、差、判定一个元素是否属于某一集合 - 并查集:集合 **并、查** 某元素属于什么集合 - 并查集问题中集合存储如何实现? - 可以用树结构表示集合,树的每个结点代表一个集合元素 ## 集合运算 - 采用数组存储形式 - 双亲表示法:孩子指向双亲 - 负数 阅读全文
摘要:
## 什么是“图” (Graph) - 表示“多对多”的关系 - 包含 - 一组顶点:通常用 V (Vertex) 表示顶点集合 - 一组边:通常用 E (Edge) 表示边的集合 - 边是顶点对:(v, w) ∈ E ,其中 v, w ∈ V - 有向边 表示从v指向w的边(单行线) - 不考虑重 阅读全文
摘要:
## 深度优先搜索(Depth First Search, DFS) ```c void DFS ( Vertex V ) { visited[ V ] = true; for ( V 的每个邻接点 W ) if ( !visited[ W ] ) DFS( W ); } ``` 若有N个顶点、E条 阅读全文