用了一天的时间迷迷糊糊看完红黑树(参加算法导论第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"这个文件名可能是该系列教程的源代码示例...
决不重新发明轮子.docx
红黑树是一种自平衡二叉查找树,它保证了插入和删除操作的时间复杂度为O(log n)。哈希表则提供了近似常数时间的查找、插入和删除,但需要处理哈希冲突。 在这个项目中,你可能会遇到以下挑战: 1. 理解并实现容器...
总结,避免产品设计中的“生造方案”和“重新发明轮子”,设计师需要深化对产品需求的理解,加强与团队的沟通,利用现有设计资源,注重用户中心原则,并持续提升自身专业素养。这样的设计过程将更有效率,更能创造出...
在IT行业中,"重新发明轮子"通常是指在已有成熟解决方案的情况下,重新设计或实现一个功能,这在面试中常用来考察候选人的基础理解、问题解决能力以及编程思维。本篇将围绕Go语言,深入探讨可能出现在面试中的相关...
本主题聚焦于使用SolidWorks设计的一款"小轮子",这款轮子是标准尺寸,配备了轴承,并且采用实心橡胶材料,适用于手推车等应用。 首先,我们来看看"roue_41-312-100b08.SLDPRT"这个文件。SLDPRT是SolidWorks的零件...
在iOS开发中,动画效果是提升用户体验的重要手段之一。本示例中的"ios-轮子动画效果.zip"文件,显然提供了使用CAKeyFrameAnimation来创建一个轮子转动效果的实例。CAKeyFrameAnimation是Core Animation框架的一部分...
幼儿托班语言教案::童话-一只大轮子(通用).doc
造轮子的目的,不是去重复的发明轮子,而是实际的去动手制作轮子。把一些公认的算法,优秀的思想,用自己的方式表达一下,锻炼一下,让知识成为自己思想的一部分。而不总是去google去百度,xxx好还是zzz好,而是能够...
"StopWatch:随博文重新发明轮子的游戏"这个项目就是一个很好的例子,它鼓励开发者通过实践来理解和掌握JavaScript中的时间管理与性能测试技巧。这篇博客文章的标题和描述暗示了作者希望通过一个有趣的编程游戏来帮助...
很多时候,都听人家在说不要重复制造轮子,要站在巨人的肩膀上等....不过让我感到有点困惑的是,怎么样...那是不是说当我们在写一个程序的时候就不应该自己设计,而是首先到网上去找,只有找不到的情况下才自己去写呢?
总结来说,自己实现轮子是一个极好的学习机会,它涵盖了基础数据结构与算法、设计模式、并发编程、数据库操作、网络编程等多个方面。在Java世界里,你可以选择从简单的工具类到复杂的框架逐一实现,每次成功都会加深...
Python轮子 非常好用Python轮子 非常好用 Python轮子 非常好用Python轮子 非常好用Python轮子 非常好用Python轮子 非常好用Python轮子 非常好用Python轮子 非常好用
需要几个轮子_《需要几个轮子》典型例题一.pdf
军刀 小型辅助框架,因此您不必担心小事并专注于代码背后的主要逻辑,而不必一遍又一遍地重新发明轮子。 有几个有用的基类和助手,如典型的保护类、序列化助手、参数解析器(例如静态主)、扩展方法的负载等等.........
我现在知道,这听起来像是在重新发明轮子,与它的进化后代相比,这太糟糕了,但这只是一个旨在自动化移动应用安全评估的更大项目的一部分。 现在要能够使用转发器,您只需要安装mimtproxy python模块即可。 到那里...
轮子哥安卓开发框架,一个非常优秀的开源框架。 各项界面,对话框,全面的内存优化、布局优化、代码优化、瘦身优化。 项目中常见的代码进行了封装,或是封装到基类中、或是封装到工具类中、或者封装到框架中,不...
一种带有减震功能的轮子的制作方法.docx
总之,表单验证是Web开发中的核心技能之一,涉及多方面的技术。通过研究源码和使用适当的工具,开发者可以创建高效、用户友好的验证机制,避免“重复造轮子”的低效实践。同时,持续学习和改进是保持竞争力的关键,...