`
changzhiwin
  • 浏览: 2951 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

发明轮子之“红黑树 一”

阅读更多
用了一天的时间迷迷糊糊看完红黑树(参加算法导论第13章 p273-301),然后又花了两天时间来用java实现 
如下是用到的两个组件类:
Color.java
package common;
/**
 * 
 * @Author   Administrator
 * @Email    changzhiwin@163.com
 * @Date     Oct 27, 2009
 * @File     Color.java
 * @Project	 tree
 */
public enum Color {
	RED,BALCK;
}



TreeNode.java
package common;
/**
 * 
 * @Author   Administrator
 * @Email    changzhiwin@163.com
 * @Date     Oct 27, 2009
 * @File     TreeNode.java
 * @Project	 tree
 */
public class TreeNode<T extends Comparable<T>> {

	/**
	 * the node's color
	 */
	private Color color;
	/**
	 * the node's value key;
	 */
	private T key;
	/**
	 * the node's left child
	 */
	private TreeNode<T> left;
	/**
	 * the node's right child
	 */
	private TreeNode<T> right;
	/**
	 * the node's parent
	 */
	private TreeNode<T> parent;
	
	public TreeNode()
	{
		
	}
	public TreeNode(Color color,T key,TreeNode<T> left,TreeNode<T> right,TreeNode<T> parent)
	{
		this.color=color;
		this.key=key;
		this.left=left;
		this.right=right;
		this.parent=parent;
	}
	
	/**
	 * getter and setter
	 */
	public Color getColor() {
		return color;
	}
	public void setColor(Color color) {
		this.color = color;
	}
	public T getKey() {
		return key;
	}
	public void setKey(T key) {
		this.key = key;
	}
	public TreeNode<T> getLeft() {
		return left;
	}
	public void setLeft(TreeNode<T> left) {
		this.left = left;
	}
	public TreeNode<T> getRight() {
		return right;
	}
	public void setRight(TreeNode<T> right) {
		this.right = right;
	}
	public TreeNode<T> getParent() {
		return parent;
	}
	public void setParent(TreeNode<T> parent) {
		this.parent = parent;
	}
	
}

分享到:
评论

相关推荐

    发明轮子之“红黑树 二”

    通过阅读博客文章"发明轮子之“红黑树 二”",我们可以期待作者对红黑树的深入解析,包括更复杂的操作如旋转和颜色调整,以及如何在实际编程中应用这些概念。"redblacktree"这个文件名可能是该系列教程的源代码示例...

    重新发明轮子:这些是我遇到的一系列面试问题的集合,我被要求重新发明轮子

    在IT行业中,"重新发明轮子"通常是指在已有成熟解决方案的情况下,重新设计或实现一个功能,这在面试中常用来考察候选人的基础理解、问题解决能力以及编程思维。本篇将围绕Go语言,深入探讨可能出现在面试中的相关...

    STL-基础数据类型的基本用法

    - **集合(Set)**:`std::set&lt;T&gt;` 是一个唯一元素的集合,通常基于红黑树实现,支持快速查找。 - **共享指针(shared_ptr)**:C++11引入的智能指针,用于管理动态分配的对象,自动释放内存,避免内存泄漏。 - *...

    C++ Standard Library Quick Refrence.pdf

    - **提高开发效率**:由于许多常见任务已经由标准库实现了,因此开发人员可以专注于解决特定问题而不是重新发明轮子。 - **增强代码质量**:标准库经过了广泛的测试和优化,因此使用标准库通常可以提高代码的质量和...

    STL.rar_C++ STL_C++ STL_STL_STL c++_STL教程

    STL不仅提供了丰富的数据结构和算法,还遵循了C++的设计哲学,即“不要重复发明轮子”,让开发者能专注于解决问题本身,而不是基础工具的实现。因此,熟练掌握STL是每一位C++程序员必备的技能。

    C++标准程式库

    1. 容器(Containers):如vector(动态数组)、list(双向链表)、set(红黑树实现的集合)、map(关联数组)等,它们提供了一种组织和管理数据的方式,并且提供了方便的操作接口。 2. 迭代器(Iterators):迭代...

    ACM_算法模板集史上最完整收藏版223页全免费版.zip

    这些模板可以帮助参赛者在面对复杂问题时,迅速定位到合适的解决方案,并避免在比赛紧张的环境中重新发明轮子。 1. **排序算法**:如快速排序、归并排序、堆排序、冒泡排序、插入排序等,它们在处理大量数据的排序...

    C++ API文档

    6. 容器类之间的关系:例如,set和map都是基于红黑树实现的,提供O(log n)的时间复杂度操作,而vector和deque则基于动态数组,提供连续的内存空间和快速的随机访问。了解这些容器之间的关系可以帮助我们选择最适合...

Global site tag (gtag.js) - Google Analytics