1 #include 2 using namespace std; 3 4 5 6 //AVL树节点信息 7 template 8 class TreeNode 9 { 10 public: 11 TreeNode():lson(NULL),rson...
分类:
其他好文 时间:
2015-03-07 21:15:39
阅读次数:
217
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 自10月初编写算法系列的博客以来,陆陆续续以来写了几十篇。按照计划,还有三个部分的内容没有介绍,主要是(Dijkstra算法、二叉平衡树、红黑树)。这部分会在后面的博客补充完整。这里主要是做一个总...
分类:
编程语言 时间:
2015-02-26 14:39:46
阅读次数:
213
我总结的思维导图如下:对于,这些基础的算法之我的实现方式-手写: 我个人来说,除了哈夫曼树、二叉平衡树、关键路径,不能用手写下来之外,其余总体能够用手写来(核心函数)。有些人说这些 程序要用编译器,但是,我对自己的要求是能够手写(当然,我肯定是前面用过编译器的编译过的)。我个人认为应该全部掌握...
分类:
编程语言 时间:
2015-02-06 18:21:32
阅读次数:
254
判定一棵二叉树是不是二叉平衡树。链接:https://oj.leetcode.com/problems/balanced-binary-tree/题目描述:Given a binary tree, determine if it is height-balanced.For this problem...
分类:
其他好文 时间:
2014-12-11 18:56:57
阅读次数:
162
原文: 一步一步写算法(之堆排序) 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 堆排序是另外一种常用的递归排序。因为堆排序有着优秀的排序性能,所以在软件设计中也经常使用。堆排序有着属于自己的特殊性质,和二叉平衡树基本是一致的。打一个比方说,...
分类:
编程语言 时间:
2014-12-11 10:18:16
阅读次数:
225
原文:一步一步写算法(之 算法总结)【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 自10月初编写算法系列的博客以来,陆陆续续以来写了几十篇。按照计划,还有三个部分的内容没有介绍,主要是(Dijkstra算法、二叉平衡树、红黑树)。这部分会在后...
分类:
编程语言 时间:
2014-12-11 10:11:49
阅读次数:
296
【题目】
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
【解析】
分治:用快慢指针找到链表的中点,作为树的root,然后二分——中点之前的链表和中点之后的链表分别再构造二叉平衡树。
/**
* Defin...
分类:
其他好文 时间:
2014-11-24 22:39:00
阅读次数:
218
引用网上的一些介绍:查找整序列的第k大值往往采用快速查找法。然而此方法会破坏原序列,并且需要O(n)的时间复杂度。抑或使用二叉平衡树进行维护,此方法每次查找时间复杂度仅为O(logn)。然而此方法丢失了原序列的顺序信息,无法查找出某区间内的第k大值。划分树的基本思想就是对于某个区间,把它划分成两个子...
分类:
其他好文 时间:
2014-09-29 22:54:41
阅读次数:
226
AVL树本质上还是一棵二叉搜索树,它的特点是:
本身首先是一棵二叉搜索树。
带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1
#include
using namespace std;
const int LH = 1;
const int EH = 0;
const int RH = -1;
bool TRUE = 1;
bool F...
分类:
其他好文 时间:
2014-09-02 17:46:25
阅读次数:
176
1. 二叉平衡树二叉排序树的时间复杂度和树的深度n有关。当先后插入的结点按关键字有序时,二叉排序树退化为单枝树,平均查找长度为(n+1)/2,查找效率比较低。提高查找效率,关键在于最大限度地降低树的深度n。因此需要在构成二叉排序树的过程中进行“平衡化”处理,使之成为二叉平衡树。二叉平衡树,又称AVL...
分类:
其他好文 时间:
2014-08-16 23:44:01
阅读次数:
291