要实现的操作是插入,删除,找到比指定值大的,小的值操作。Splay的删除操作可以是直接用二叉搜索树的删除方式,或者是先将要删除的节点Splay到根,然后找到左子树中最大的节点,将其Splay到根的左儿子位置,此时这个节点必然是没有右子树的,然后直接把他当做根就好。找大的值可以先找到如果要插入这个值会...
分类:
其他好文 时间:
2015-02-06 12:41:24
阅读次数:
208
题目:如何判断一个二叉树是平衡二叉树
定义:
平衡二叉树(AVL):1、空二叉树是AVL树;
2、如果T是一颗非空的二叉搜索树,TL和TR分别是其左子树和右子树,那么当T满足一下条件时,T是一颗AVL树:(1)TL和TR是AVL树;(2)|HL-HR|《=1,HL和HR分别是左子树和右子树的高度
示例:
算...
分类:
编程语言 时间:
2015-02-04 16:34:19
阅读次数:
145
官网有一个二叉排序树的例子,在此基础上增加了查找和删除节点功能。
代码:
package main
//Binary Search Trees
//author: Xiong Chuan Liang
//date: 2015-2-1
import (
"fmt"
"math/rand"
)
func main() {
t := New(10, 1)
if Searc...
分类:
编程语言 时间:
2015-02-01 17:48:44
阅读次数:
185
树,一种十分优美的数据结构,因为它本身就具有的递归性,所以它和子树见能相互传递很多信息,还因为它作为被限制的图在上面可进行的操作更多,所以各种用于不同地方的树都出现了,二叉树、三叉树、静态搜索树、AVL树,线段树、SPLAY树,后缀树等等.. 枚举那么多种数据结构只是想说树方面的内容相当多,本...
分类:
其他好文 时间:
2015-01-31 14:28:37
阅读次数:
185
转自:http://www.blogjava.net/fancydeepin/archive/2013/02/03/395073.html深度优先搜索算法(Depth First Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索...
分类:
其他好文 时间:
2015-01-30 17:01:47
阅读次数:
173
上一篇讲了贪心算法来解活动选择问题(【算法导论】贪心算法之活动选择问题),发现后面有一道练习16.1-1是要用动态规划来解活动选择问题。其实跟之前的矩阵链乘法有些相似,也是考虑分割的活动是哪一个,并用二维数据来记录Sij---最大兼容集合个数,和用另一个二维数据来记录Sij取得最大时的活动分割点k。然后就是考虑边界问题,和使用递归来求动态规划的最优解。
#i...
分类:
编程语言 时间:
2015-01-28 22:36:17
阅读次数:
408
给定一个序列,判断该序列是不是二叉搜索树的后序遍历序列
二叉搜索树定义:
二叉查找树(英语:Binary Search Tree),也称二叉搜索树、有序二叉树(英语:ordered binary tree)
,排序二叉树(英语:sorted binary tree),是指一棵空树或者具有下列性质的二叉树:
1、若任意节点的左子树不空,则左子树上所有结...
分类:
其他好文 时间:
2015-01-23 23:06:05
阅读次数:
220
二叉搜索树是ACM中经常需要用到的数据结构,熟练掌握map和set的用法很关键,现对其做一个简单的总结。主要的功能有:插入元素,查找元素,删除,遍历/反向遍历。现以map为例说明用法,multimap是可以插入重复键值的元素的map。#include#include#include#include#...
分类:
其他好文 时间:
2015-01-23 22:50:04
阅读次数:
180
引言本文来自于Google的一道题目:how to merge two binary search tree into balanced binary search tree.how to merge two binary search tree into balanced binary searc...
分类:
其他好文 时间:
2015-01-22 14:39:12
阅读次数:
207