用了一天的时间迷迷糊糊看完红黑树(参加算法导论第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语言,深入探讨可能出现在面试中的相关...
- **集合(Set)**:`std::set<T>` 是一个唯一元素的集合,通常基于红黑树实现,支持快速查找。 - **共享指针(shared_ptr)**:C++11引入的智能指针,用于管理动态分配的对象,自动释放内存,避免内存泄漏。 - *...
- **提高开发效率**:由于许多常见任务已经由标准库实现了,因此开发人员可以专注于解决特定问题而不是重新发明轮子。 - **增强代码质量**:标准库经过了广泛的测试和优化,因此使用标准库通常可以提高代码的质量和...
STL不仅提供了丰富的数据结构和算法,还遵循了C++的设计哲学,即“不要重复发明轮子”,让开发者能专注于解决问题本身,而不是基础工具的实现。因此,熟练掌握STL是每一位C++程序员必备的技能。
1. 容器(Containers):如vector(动态数组)、list(双向链表)、set(红黑树实现的集合)、map(关联数组)等,它们提供了一种组织和管理数据的方式,并且提供了方便的操作接口。 2. 迭代器(Iterators):迭代...
这些模板可以帮助参赛者在面对复杂问题时,迅速定位到合适的解决方案,并避免在比赛紧张的环境中重新发明轮子。 1. **排序算法**:如快速排序、归并排序、堆排序、冒泡排序、插入排序等,它们在处理大量数据的排序...
6. 容器类之间的关系:例如,set和map都是基于红黑树实现的,提供O(log n)的时间复杂度操作,而vector和deque则基于动态数组,提供连续的内存空间和快速的随机访问。了解这些容器之间的关系可以帮助我们选择最适合...