胡小哲的博客

胡小哲

AVL 树

由于之前的搜索二叉树在单支树的情况下,时间复杂度依然为 O(N),所以我们应该对其进行调整,此时遍出现了 AVL 树,AVL 树是最先发明的自平衡二叉搜索树。在AVL树中,在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是 O(log...

2018-02-05 17:19:42

阅读数 46

评论数 0

二叉搜索树

概念:二叉查找树(Binary Search Tree) (又:二叉搜索树,二叉排序树) 它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右...

2018-01-30 20:08:11

阅读数 69

评论数 0

常见排序算法

排序概念将一组杂乱无章的数据按照一定的规律组织起来。排序分内部排序和外部排序。 如果整个排序过程不需要访问外存便能完成,则称此类排序为内部排序。若参加排序的记录数量很大。 整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。常见的排序算法插入排序直接插入排序原理: 每一次将一个...

2018-01-16 20:23:52

阅读数 67

评论数 0

huffman树

概念 给定 n 个权值作为 n 个页子节点,构造一颗二叉树,若带权路径长度达到最小,称这样的二叉树为哈夫曼树。huffman树是带权路径长度最短的树,权值较大的节点离根节点较近。构造 huffman 树 1、由给定的n个权值{w1,w2,w3,…,wn}构造n棵只有根节点的二叉树森林F= {T...

2018-01-03 13:50:41

阅读数 95

评论数 0

堆是一类特殊的 数据结构的统称,堆通常是一个可以被看作一棵树的数组对象。 堆满足的性质: 1.任一节点的值总是不大于或不小于其父节点的值。 2.堆总是一棵完全二叉树。 3.大堆/小堆。先将数组用完全二叉树的形式表现出来 此时可以发现,这棵树并不满足堆的性质。所以我们需要对这棵树进行调...

2018-01-03 13:34:46

阅读数 160

评论数 0

二叉树线索化

首先提出一个问题 为什么要线索化二叉树?二叉树遍历的本质上是将一个复杂的非线性结构转换为线性结构,使每个节点都有了唯一前驱和后继(第一个节点无前驱,最后一个节点无后继)。对于一个节点,查找其左右子树是方便的,但是查找其前驱和后继只能在遍历中找到。 线索化二叉树解决了无法直接找到该节点在某种遍历...

2017-12-05 19:16:46

阅读数 167

评论数 0

二叉树面试题

1.求二叉树节点个数 可以使用递归解决。将问题分解为求根节点+左子树的节点数+右节点的节点数。 实现 :public: size_t _Size() { //封装调用 return Size(_root); } private: ...

2017-12-02 11:23:29

阅读数 131

评论数 0

矩阵(Matrix)

特殊矩阵的存储对称矩阵在这里给出一组对称矩阵 因为其对称性,我们不需要存储其全部内容,只需要存储其下三角矩阵或者上三角矩阵。 在这里我选择存储下三角矩阵。 设矩阵的行数为M. 则需要存储的元素个数为 M(M+1)/2,以行优先进行存储。当对此矩阵进行访问时,我们在内存中存储的数据应...

2017-11-24 19:24:38

阅读数 367

评论数 0

栈的应用

栈的应用1.括号匹配在这里我们给出一组带括号的表达式 1.(()))abcd[]{}; 2.((()){{bcd}}; 3.((]){}[]{{}}; 4.()(){}{[]}[];需要我们去判断里面的括号之间是否匹配 此时可能出现几种情况 1.右括号比左括号多 ...

2017-11-17 16:47:53

阅读数 203

评论数 0

使用堆栈(Stack)模拟实现队列(FIFO)

使用堆栈(Stack)来模拟实现队列(FIFO)功能,要求数据必须存储再堆栈内部。 需要实现: enqueue(入队) dequeue(出队) Empty(判空)因为堆栈和队列的线性运算不同,在这里只使用一个堆栈是不够的,我们可以用两个堆栈联合完成队列的模拟。 当入队时,将入队的所有元素...

2017-10-25 00:18:06

阅读数 655

评论数 0

二叉树创建与遍历

二叉树的创建定义:二叉树是每个节点最多有两个子树的树结构。通常子树被称为”左子树”和”右子树”。二叉树的每个节点最多只能右两棵子树,子树有左右之分,次序不能颠倒。概念:1.满二叉树:除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。2.完全二叉树:假设二叉树的高度为K,除第K层外,...

2017-10-16 19:45:37

阅读数 146

评论数 0

栈和递归解决迷宫问题

先给出一个迷宫的模型。0代表通路,1代表墙壁,知道出入口后,找到入口到出口之间的通路。 先给出一个简单迷宫模型 现在令下方为出口方向,[2,0]作为入口寻找通路。将走过的路程标记为2。 此时可以发现迷宫存在一个分叉口,假如以顺时针方向对是否存在通路进行判别,则必定会先走没有出口的那一条死...

2017-10-12 21:25:39

阅读数 237

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭