摘要: 平衡二叉树(Balanced Binary Tree)是二叉查找树的一个进化体,也是第一个引入平衡概念的二叉树。1962年,G.M. Adelson-Velsky 和 E.M. Landis发明了这棵树,所以它又叫AVL树。平衡二叉树要求对于每一个节点来说,它的左右子树的高度之差不能超过1,如果插入或者删除一个节点使得高度之差大于1,就要进行节点之间的旋转,将二叉树重新维持在一个平衡状态。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来说,时间上 阅读全文
posted @ 2013-12-23 22:13 shaughn 阅读(223) 评论(0) 推荐(0) 编辑
摘要: C++ Primer 中文4th版第一部分第一 二章1.引用(reference)就是对象的另外一个名字。2.当引用初始化后,只要该引用存在,他就保持绑定在初始化时指向的对象。不可能将引用绑定到另外一个对象上。3.非 const 引用只能绑定到和他一样类型的对象上,而const引用可以绑定到不同但是相关的对象或右值上。P52.4.声明:只是向程序表明变量的类型和名字,不分配存储空间。 定义:为变量分配存储空间,还可以指定初始值。5.对于一些定义在头文件中的const对象,他的定义应该用常量表达式初始化。如果没有用常量表达式初始化,就不应该定义在头文件中,而应该象其他变量一样定义在其他源文件中并 阅读全文
posted @ 2013-12-23 22:09 shaughn 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 第五章 树的 代码(原文:http://blog.csdn.net/jiajiayouba/article/details/9224403) 1 #include 2 #include 3 4 typedef char ElemType; //数据类型 5 typedef enum {Link,Thread} childTag; //Link表示结点,Thread表示线索 6 typedef struct bitNode 7 { 8 ElemType data; 9 struct bitNode *lchild,*rchild; 10 int ltag,rt... 阅读全文
posted @ 2013-12-23 22:08 shaughn 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 #define MAX_HEAP 200 4 #define heap_full(n) (n==MAX_HEAP) 5 #define heap_empty(n) (!n) 6 //最大堆(大根堆)插入操作 删除操作 7 8 9 typedef struct{10 int k;11 }element ;12 element heap[MAX_HEAP];13 14 void push(element item, int * n)15 {16 int i ;17 if(heap_full(*n)){18 ... 阅读全文
posted @ 2013-12-23 22:08 shaughn 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 1 //二叉查找树的建立,插入,删除操作 2 #include 3 #include 4 5 typedef struct bsTree 6 { 7 int k ; 8 struct bsTree * lchild , * rchild ; 9 }bstnode , * bstree ; 10 11 void create_tree(bstree *T,int k1) 12 { 13 (*T) = (bstree)malloc(sizeof(bstnode)); 14 if(!(*T)){ 15 fprintf(st... 阅读全文
posted @ 2013-12-23 22:08 shaughn 阅读(463) 评论(0) 推荐(0) 编辑