本蒟蒻也说不清什么时候会更新。。#0 pre树是一种抽象的数据结构,其拥有强大的生命力。本质上树是图的特例,但是树的特殊性质使它处理起比图方便得多。而二叉树又是树的一种特例了,于是透过二叉树,我们拥有了丰富多彩的数据结构们。二叉树存图少见,但是用于数据结构则常见得很。为什么呢?二叉树有着友好的性质如...
分类:
其他好文 时间:
2014-11-28 01:04:21
阅读次数:
194
数的构造同插入函数那篇文章的构造。主要增加了查找父节点和删除的函数,同时为了方便删除了插入的函数。获取父节点的函数如下: 1 BTree *getFather(BTree *root,BTree *child) 2 { 3 if (root == child) 4 retur...
分类:
其他好文 时间:
2014-11-28 00:51:27
阅读次数:
233
字典树,又称为字母数,前缀树等等,不仅可以存储字符,还可以存储数字等,
又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。
字典树与字典很相似,当你...
分类:
其他好文 时间:
2014-11-27 01:39:23
阅读次数:
202
在已知的二叉查找树中插入节点,当然插入后的节点会位于叶子上,如果插入的数据与原来就有的数据相同,那么就不插入,当然如果在树的结构中增加一个代表数据重复次数的成员或是另开一个数据结构保存重复次数。主要函数如下: 1 BTree *insertNode(BTree *root,int data) 2 {...
分类:
其他好文 时间:
2014-11-27 00:09:47
阅读次数:
278
二叉查找树的定义是: 树中每一个根节点的左子树上的数据全部都小于根节点的数据,右子树都大于根节点的数据。例图(XMind):现在没看到二叉查找树如何动态构建,因此先手动构造了上述树,先把递归查找的函数贴出来SearchTree.cpp 1 #include "iostream" 2 #includ....
分类:
其他好文 时间:
2014-11-26 22:32:20
阅读次数:
256
给出一个已排序的数组,将其转化为二叉查找树(BST)。思路:取数组中间元素为根结点的value,则数组左侧、右侧分别为BST的左子树、右子树。递归可求解。代码如下: 1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * ...
分类:
其他好文 时间:
2014-11-26 18:13:30
阅读次数:
206
BST树的经典问题首先构造如下一棵二元查找树(BST树):C++代码实现:typedef struct _BSTreeNode { int value; struct _BSTreeNode *left; struct _BSTreeNode *right;} BSTreeNode...
分类:
其他好文 时间:
2014-11-26 18:05:42
阅读次数:
211
二叉查找树(Binary Search Tree)的遍历的方法有很多,通常使用的是递归的遍历,其便于理解,但是使用递归的话会造成程序运行的空间浪费,效率并不高。为此可以使用一个栈来模拟递归的过程,实现迭代版的二叉查找树的遍历。但是会使用到额外的存储空间,虽说在运行效率上比递归版的有所提高,但是额外的存储空间还是一定的浪费。但是如何减少额外的存储空间呢?我们知道二叉查找树是可以转换为一个双向环形链表...
分类:
其他好文 时间:
2014-11-25 14:39:21
阅读次数:
172
和上一题Unique Binary Search Trees一样,这里是要记录所有的可能。存在树里面。这题还是有点难的,我拿了笔写了前几个,推敲了一下,发现如果和上一题一样,存前面的值计算后面的的话会非常复杂,且可能涉及到给一颗数的所有节点加某个值。最终还是放弃用这个方法。可行的二叉查找树的数量是相...
分类:
其他好文 时间:
2014-11-25 00:15:15
阅读次数:
275
[转载]一篇还算可以的文章,关于可持久化线段树http://finaltheory.info/?p=249无修改的区间第K大我们先考虑简化的问题:我们要询问整个区间内的第K大。这样我们对值域建线段树,每个节点记录这个区间所包含的元素个数,建树和查询时的区间范围用递归参数传递,然后用二叉查找树的询问方...
分类:
其他好文 时间:
2014-11-21 23:11:31
阅读次数:
290