二叉查找树又称二叉搜索树,是一种效率极高的数据结构。 二叉查找树的定义是: 对于一棵二叉查找树上的一个节点,他的左子树上的任何一个值都比它小,右子树上的任何一个值都比它大(不考虑相等的情况)。他的左右子树又是一棵二叉查找树。 比如下图就是一个二叉查找树: 主要功能有: 插入,查找和删除。 我们还需要
分类:
其他好文 时间:
2016-03-13 17:56:27
阅读次数:
249
一、二叉排序树定义 1.二叉排序树的定义 二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树(Binary Search Tree)。其定义为:二叉排序树或者是空树,或者是满足如下性质的二叉树:①若它的左子树非空,则左子树上所有结点的值均小于根结点的值;②若它的右子树非空,则右子树
分类:
编程语言 时间:
2016-03-13 14:31:37
阅读次数:
309
http://acm.hdu.edu.cn/showproblem.php?pid=1003 这几天开始刷动归题目,先来一道签到题 然而做的并不轻松, 没有注意到边界问题, WA了几发才发现 #include<iostream> #include<cstdio> #include<cstring>
分类:
其他好文 时间:
2016-03-10 14:43:15
阅读次数:
165
题目来源: https://leetcode.com/problems/recover-binary-search-tree/ 题意分析: 二叉搜索树中有两个点错了位置,恢复这棵树。 题目思路: 如果是没有空间复杂度限制还是比较简单。首先将树的值取出来,然后排序,将相应的位置判断是否正确。如果要特定
分类:
编程语言 时间:
2016-03-07 18:38:59
阅读次数:
145
复杂度 O(logn) 1 #include <queue> 2 #include <cstdio> 3 using namespace std; 4 5 //表示节点的结构体 6 struct node{ 7 int val; 8 node *lch,*rch; 9 }; 10 11 //插入数值
分类:
其他好文 时间:
2016-03-06 17:21:36
阅读次数:
164
Given a non-empty binary search tree and a target value, find k values in the BST that are closest to the target. Note: Given target value is a floati
分类:
其他好文 时间:
2016-03-06 15:30:11
阅读次数:
385
Given a non-empty binary search tree and a target value, find the value in the BST that is closest to the target. Note: Given target value is a floati
分类:
其他好文 时间:
2016-03-03 07:56:44
阅读次数:
129
定义:我们先来看看《算法导论》中的红黑树的定义:“红黑树是许多‘平衡’搜索树的一种,可以保证在最坏的情况下基本动态集合操作的时间复杂度为O(lgn)。”性质:红黑树的性质如下:1、每个节点是红色的,或者是黑色的。2、根节点和叶子节点是黑色的。3、如果一个节点是红色..
分类:
编程语言 时间:
2016-02-29 23:27:36
阅读次数:
617
二叉搜索树基本操作都可以在O(h)内完成,然而数的高度较高时,可能并不比在链表上执行的快。红黑树是平衡搜索树中的一种保证在最坏情况下时间复杂度为O(lg(n)) 红黑树的性质 每个节点或是红色或是黑色 根节点是黑色的 每个叶节点是黑色的 如果一个节点是红色,则两个子节点是黑色的 每个节点,到后代叶子
分类:
其他好文 时间:
2016-02-26 17:10:46
阅读次数:
262
红黑树是上一章二叉搜索树的改进,实现一种平衡 ,保证不会出现二叉树变链表的情况,基本动态集合操作的时间复杂度为O(lgn) 实际用途:c++stl中的set,map是用他实现的 红黑树的性质: 1.每个结点或是红色的,或是黑色的 2.跟结点是黑色的 3.每个叶结点(NIL)是黑色 4.如果一个结点是...
分类:
编程语言 时间:
2016-02-23 11:07:40
阅读次数:
326