前言
本文不打算延续前几篇的风格(对所有的源码加入注释),因为要理解透TreeMap的所有源码,对博主来说,确实需要耗费大量的时间和经历,目前看来不大可能有这么多时间的投入,故这里意在通过于阅读源码对TreeMap有个宏观上的把握,并就其中一些方法的实现做比较深入的分析。
红黑树简介
TreeMap是基于红黑树实现的,这里只对红黑树做个简单的介绍,红黑树是一种特殊的二叉排序树,关于二叉排序树,参见:http://blog.csdn.net/ns_code/article/details/...
分类:
编程语言 时间:
2014-07-08 14:58:49
阅读次数:
170
定义
二叉搜索树(Binary Search Tree)或称二叉查找树,也称二叉排序树(Binary Sort Tree)。它或者是一棵空树,或者是具有下列性质的二叉树:
若左子树不空,则左子树上所有节点的值均小于它的根节点的值;
若右子树不空,则右子树上所有节点的值均大于它的根节点的值;
左、右子树也分别为二叉搜索树;
性质
二叉搜索树与普通二叉树相比,有一些优秀的特征或性质:
由于节点是有序排放的:左子树<根节点<右子树。故在查找一个节点的时候,只需先和根节点比较,再决定是进入左子树还是右子树查找。...
分类:
其他好文 时间:
2014-07-06 11:06:37
阅读次数:
167
二分查找树(也叫二叉查找树、二叉排序树)的提出是为了提供查找效率,之所以称为二分查找树,因为该二叉树对应着二分查找算法,查找平均的时间复杂度为o(logn),所以该数据结构的提出是为了提高查找效率。...
分类:
其他好文 时间:
2014-07-03 15:43:16
阅读次数:
286
以下四个验证性实验都做。(1)顺序查找验证(2)折半查找验证(3)二叉排序树的建立(4)哈希表的建立#include#include#include#include#include#includeusing namespace std;class dijiuzhang{public: int ...
分类:
其他好文 时间:
2014-07-02 20:24:09
阅读次数:
374
几种树:(1)平衡树:package com.jp.algorithm.tree;import java.util.Iterator;import java.util.NoSuchElementException;/** * 平衡二叉树 * * 定义:首先它是一种特殊的二叉排序树,其次它的左子树和....
分类:
其他好文 时间:
2014-06-28 17:14:17
阅读次数:
156
这个题的意思就是给定一个序列,判断这个序列是否是某个二叉排序树的后序遍历序列,这个算法的方法主要是根据后序遍历的性质,首先这个序列的最后一个元素肯定是根元素,然后将序列从左往右遍历,找到第一个大于根元素的点,这个点左边的肯定是当前根的左子树,这个点的右边肯定是当前根的右子树,继续向后遍历,看右子.....
分类:
其他好文 时间:
2014-06-26 00:18:44
阅读次数:
280
1、序详细实现了二叉查找树的各种操作:插入结点、构造二叉树、删除结点、查找、 查找最大值、查找最小值、查找指定结点的前驱和后继2、二叉查找树简介它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值...
分类:
其他好文 时间:
2014-06-25 20:44:28
阅读次数:
294
排序二叉树对于我们寻找无序序列中的元素的效率有了大大的提高。查找的最差情况是树的高度。这里就有问题了,将无序数列转化为二叉排序树的时候,树的结构是非常依赖无序序列的顺序,这样会出现极端的情况。【如图1】: 这样的一颗二叉排序树就是一颗比较极端的情况。我们在查找时候,效率依赖树的高度,所以不希望这样....
分类:
其他好文 时间:
2014-06-25 15:54:27
阅读次数:
300
#include#include "fatal.h"struct TreeNode;typedef struct TreeNode *Position;typedef struct TreeNode *SearchTree;typedef int ElementType;SearchTree Mak...
分类:
编程语言 时间:
2014-06-25 12:53:17
阅读次数:
334