现在越发觉得关于树的问题真是千变万化,随便改一个条件又会是一个新的问题。
问题:一棵二叉树每个节点包含一个整数,请设计一个算法输出所有满足条件的路径:此路径上所有节点之和等于给定值。注意此类路径不要求必须从根节点开始。
如果没有最后一个条件,这道题在leetcode上面过,就是采取先序遍历的方式并记录下路径。但是加上最后一个条件后需要转下弯思考一下。
当然也需要记录下...
分类:
其他好文 时间:
2015-08-25 21:42:22
阅读次数:
178
红黑树的特性: 1.红黑树是一棵二叉搜索树。 2.树上的每个结点或为红,或为黑。 3.如果一个结点为红色,那么它的左右子结点一定为黑色。 4.从根结点到每个叶子结点路径中经过的黑色结点数是相同的。 5.根结点必须是黑色。 理解这些特性是很重要的。正是因为有这些特性,才保证了红黑树的高效。...
分类:
其他好文 时间:
2015-08-25 21:04:59
阅读次数:
214
红黑树的实现还真不简单,各种染色旋转足足折腾了笔者几天。。 ????不过收获也是巨大的。笔者现在终于明白为啥二叉搜索树这么重要了,确实很有用。 ????下面上代码。 ????细心的朋友可能会觉...
分类:
编程语言 时间:
2015-08-21 21:44:19
阅读次数:
352
线段树(interval tree),也叫区间树。也是一种二叉搜索树,同一般的BST不同之处在于:线段树的每一个结点包含的是一个区间而不是一个数。具体的描述如下:从图上可以看出,线段树的每一个结点都是一个线段(区间),子节点是对父结点的进一步分划,每个子节点的长度都是父节点的二分,每个叶子结点就.....
分类:
其他好文 时间:
2015-08-21 15:23:51
阅读次数:
193
二叉搜索树的查找——递归算法:boolFind(BTreeNode*BST,ElemType&item) {if(BST==NULL) returnfalse;//查找失败else{ if(item==BST->data){ item=BST->data;//查找成功 return__...
分类:
编程语言 时间:
2015-08-20 20:45:43
阅读次数:
281
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关...
分类:
其他好文 时间:
2015-08-20 18:27:47
阅读次数:
82
线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。
对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。
使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O...
分类:
其他好文 时间:
2015-08-20 17:01:26
阅读次数:
160
栈、队列、链表都有他们各自的好处,同样的也有弊端的存在。
如果我想要一个有序的数组和链表这个当然很好实现。现在我要在这几个数据结构中查找一个值。先说数组,因为是有序的通过二分查找很快的就可以找到。查找的效率还是很高的,但如果要是插入呢,为了保证有序,我要先找到插入位置,然后再将比插入数字大的数字依次向后移动;这时的第一反应就是链表!他打插入速度很快,只要改变指针的指向就可以了。但是链表大查找要从头开始找啊。只有知道了前一个元素的地址才能知道下一个地址。所以链表查找起来又费劲了。这时候就有人引进了...
分类:
编程语言 时间:
2015-08-20 13:12:44
阅读次数:
132
源代码如下:
#include
#include
//#define Key int
#define hl h->l
#define hr h->r
#define hlr h->l->r
#define hll h->l->l
#define hrr h->r->r
#define hrl h->r->l
typedef int Key;
struct Item{
Key key;
c...
分类:
其他好文 时间:
2015-08-20 13:07:34
阅读次数:
166
源代码如下:
这里的Key 不当为关键字对待, 而是把Item.c作为关键字对待
#include
#include
//#define Key int
typedef int Key;
struct Item{
Key key;
char c;
};
typedef struct STnode* link;
struct STnode{
Item item ; li...
分类:
编程语言 时间:
2015-08-20 10:37:16
阅读次数:
122