我是学习Java编码的初学者,并且正在实现Red Black Tree数据结构。我为Main类中的节点创建了一个类,并使用T扩展了ComparableT。
但是,以下行
RedBlackNode<T> nil =new RedBlackNode<T>(mainkey);
给出了错误,因为它没有标识“ T”数据类型的用法。我正在努力学习Comparable的用法,但无法解决此问题。任何帮助将不胜感激
public class Main {
public void main(String[] args) {
System.out.println("Hello World! qNew");
int mainkey=10;
System.out.println(mainkey);
RedBlackNode<T> nil =new RedBlackNode<T>(mainkey);
//RedBlackNode<T> root=nil;
//System.out.println(nil.key);
}
public class RedBlackNode<T extends Comparable <T>>
{
public static final int BLACK = 0; //Enumerating Colors with numbers for
public static final int RED = 1; // Color of node
public T key;
RedBlackNode<T> parent; //Parent Node
RedBlackNode<T> left; //Left Child Node
RedBlackNode<T> right; //Right Child Node
public int numLeft=0; //No of elements to left of a node
public int numRight=0; //No of elements to right of a node
public int color; //Color of each node
//Default constructor to initialize
RedBlackNode()
{
color=BLACK;
numLeft=0;
numRight=0;
parent=null;
left=null;
right=null;
}
//Constructor to initialize key value of the node
RedBlackNode(T key)
{
this();
this.key=key;
}
}
}
答案 0 :(得分:1)
T代表您想要的任何形式。在编写课程时,您使用大写字母T或G,但是使用大写字母时,它需要知道T是什么。
如果我有一个Person类作为节点中的数据,我将像这样RedBlackNode<Person> parent = new RedBlackNode<Person>();
答案 1 :(得分:0)
实际上这可行:
RedBlackNode nil = new RedBlackNode(mainkey);
似乎通过跳过数据类型,Java自动使用提供的那个作为参数