构建一个递归函数treeToList(Node root),将一棵已排序的二叉树,调整内部指针,使之从外面看起来,是一个循环双向链表。其中前向指针存储在"small"区域,后向指针存储在"large"区域。链表需要进行调整进行升序排序,并返回链表头指针。
下面的这篇文章详细解释了这个转换的过程。
http://cslibrary.stanford.edu/109/TreeListRecursi...
分类:
编程语言 时间:
2015-06-14 15:14:41
阅读次数:
167
前记:由于种种原因,以前一看到什么树啊链表啊,那就相当的恐惧,真是惭愧,最近仔细研究了一下这些东西,发现也就那样,或许是我之前根本就没怎么花心思学。。 话不多说,下面就直接上代码吧,也没什么好解释的,只要我自己理解代码就行了,哈哈哈。。。 代码参考《C和C++程序员面试秘笈》一书 // Tree.c...
分类:
编程语言 时间:
2015-06-12 23:39:28
阅读次数:
127
二叉树排序// 二叉树排序.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include
#include
#includestruct data{
int num;
struct data* lbaby, *rbaby;
}*root, *tree, *leaf;void find...
分类:
编程语言 时间:
2015-06-02 18:06:20
阅读次数:
110
1、代码2、运行结果3、分析1、代码#include #include typedef struct _Node{ int value; struct _Node * pLeft; struct _Node * pRight;} Node;Node * getNewNode(int...
分类:
编程语言 时间:
2015-05-26 23:05:01
阅读次数:
232
【数据结构】——排序算法——1.2、二叉树排序
一、先上维基的图:二叉树排序wiki
图一、二叉树排序
二、描述
二叉查找树(英语:Binary Search Tree),也称二叉搜索树、有序二叉树(英语:ordered
binary tree),排序二叉树(英语:sorted binary tree),是指一棵空树或者具有下列性质的二叉树:
若任意节点的左子...
分类:
编程语言 时间:
2015-05-21 10:52:21
阅读次数:
190
1.Map接口 Map接口定义的集合又称查询表,用于存储所谓"Key-Value"映射对。Key可以看成是Value的索引,作为Key的对象在集合中不可以重复。 根据内部结构的不同,Map接口有多种实现类,其中常用的内部类为hash表实现的HashMap和内部为排序二叉树实现的TreeMap。2.....
分类:
其他好文 时间:
2015-05-11 20:02:03
阅读次数:
126
二叉查找树(Binary Search Tree)也称二叉搜索树、有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空...
分类:
其他好文 时间:
2015-04-11 17:47:51
阅读次数:
121
Treap
Treap是一种动态平衡的BST(Binary Search Tree),它每个节点拥有键值和优先级两种属性。对于键值而言,它是一颗排序二叉树。对于优先级而言,这棵树是堆(优先级最高的是根节点)。可以证明Treap中插入,删除和查找的期望时间复杂度均为O(logn)。关于Treap的更多介绍,可见刘汝佳《训练指南》P230。
一般我们用Treap就是用来替代平衡二叉...
分类:
其他好文 时间:
2015-03-31 14:40:38
阅读次数:
226
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3521ATTENTION:如果用long long 减小误差,这道题只能用%lld读入首先需要判断哪些点是相互挨着的,这样比直接维护哪些集合是冰冻住的简单按照x为主,y为辅排序...
分类:
编程语言 时间:
2015-02-21 13:10:56
阅读次数:
192
1.小根堆
若根节点存在左子女则根节点的值小于左子女的值;若根节点存在右子女则根节点的值小于右子女的值。
2.大根堆
若根节点存在左子女则根节点的值大于左子女的值;若根节点存在右子女则根节点的值大于右子女的值。
3.结论
(1)堆是一棵完全二叉树(如果公有h层,那么1~h-1层均满,在h层连续缺失若干个右叶子)。
(2)小根堆的根节点的值是最小值,大根堆的根节点的值是最大值。
(3)...
分类:
编程语言 时间:
2015-02-02 21:34:38
阅读次数:
208