c++/数据结构
文章平均质量分 79
关于我对c++及数据结构的学习(c++实现)
LLZK_
这个作者很懒,什么都没留下…
展开
-
【c++】构建一棵简单的二叉树
本文主要讲了如何使用c++来构建一个二叉树类,以及一些功能算法的实现。文中大部分函数的思想都是递归,其中赋值运算符重载有传统写法和现代写法两个版本,层序遍历是非递归,前、中、后序遍历有递归和非递归两个版本。1、构造函数(递归)2、拷贝构造函数(递归)3、析构函数(递归)4、赋值运算符重载(传统/现代)5、前中后序遍历(递归/非递归)6、层序遍历(非递归)7、查找第k层结原创 2016-10-16 15:58:21 · 25806 阅读 · 6 评论 -
二叉树的五道面试题
1、判断一棵树是否是完全二叉树;2、求二叉树中最远两个结点的距离;3、由前序和中序遍历序列重建二叉树 (前序序列:1 2 3 4 5 6 - 中序序列:3 2 4 1 6 5);4、求二叉树两个结点的最近公共祖先;5、将二叉搜索树转化成有序的双向链表;判断一棵树是否是完全二叉树要想判断一颗树是否是完全二叉树,你得先知道什么是完全二叉树。完全二原创 2016-11-30 10:14:42 · 6204 阅读 · 2 评论 -
【c++】二叉树的线索化
什么是二叉树的线索化?或者问什么是线索二叉树?按照某种遍历方式对二叉树进行遍历,可以把二叉树中所有结点排序为一个线性序列。在改序列中,除第一个结点外每个结点有且仅有一个直接前驱结点;除最后一个结点外每一个结点有且仅有一个直接后继结点。这些指向直接前驱结点和指向直接后续结点的指针被称为线索(Thread),加了线索的二叉树称为线索二叉树。以上是搜狗百科的一段文字,反正我是没看太懂。简单点原创 2016-10-18 16:36:20 · 4148 阅读 · 0 评论 -
【c++】数据结构———堆
堆是一种特殊的数据结构,它通常是一个可以被看做一棵树的数组对象。What?那它到底是一棵树,还是一个数组呢?答案是数组。这个数组以二叉树的形式来维护。注意:这个二叉树必须是完全二叉树堆结构的二叉树存储有两种: 最大堆:每个父亲结点的值都大于孩子结点。 最小堆:每个父亲结点的值都小于孩子结点。顾名思义,这种结构就是可以根节点为最大的/最小的结点。原创 2016-10-20 09:57:41 · 4747 阅读 · 1 评论 -
【c++】AVL树详解
AVL树是又叫平衡二叉搜索树,但是它不是完全平衡,只是近似平衡(高度平衡)。什么叫完全平衡?想象一下完全二叉树。根据名字’二叉搜索树‘,我们可以知道它的一些性质:1. 每个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同。2. 左子树上所有节点的关键码(key)都小于根节点的关键码(key)。3. 右子树上所有节点的关键码(key)都大于根节点的关键码(key)原创 2016-10-30 10:50:21 · 2242 阅读 · 3 评论 -
【c++/数据结构】红黑树-RBTree
什么叫红黑树?同AVL树一样,红黑树也是近似平衡的二叉搜索树,与AVL树不同的是红黑树没有了平衡因子,但增加了一个枚举变量,来标明结点的颜(RED or BLACK)。因为红黑树可以保证它的最长路劲不超过它最短路径的两倍,所以它近似平衡。红黑树具有以下几点性质: 1. 每个结点都必须具有一种颜色(RED or BLACK)。 2. 根结点为黑色。 3. 如果一个结点为红色,那么它的两个孩原创 2016-10-30 16:38:40 · 1270 阅读 · 0 评论 -
【面试题】海量数据面试题分析
海量面试题的条件一般都要求我们处理一批计算机内存放不下的数据。当我们遇到这种面试题时,常有以下几种思想: 1. 哈希切分 哈希切分就是将一个大文件,利用哈希的原理,将其分为若干个小文件。相同的数据都被分到同一个文件里。例如我有一个存放着100亿个整数的大文件,将其分为100个小文件。将每个数都模100,结果相同的数存放到一个文件里。如果这100亿个数理想均匀,则每个小文件大约为1亿个数。原创 2016-11-09 22:11:23 · 1032 阅读 · 0 评论 -
【c++/数据结构】哈希表
哈希表哈希表(HashTable)又叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 哈希表的做法其实很简单,就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字。把这个整型数字作为元素的下标存入数组(散列表),我们常用的算法有以下几原创 2016-11-06 14:19:23 · 2479 阅读 · 0 评论