如果我有一个节点类可以接受它的键值的泛型类型:
class Node<K extends Comparable<K>> implements Comparable<Node<K> {
...
}
class KeyValueNode<K extends Comparable<K>, V> extends Node<K> {
...
}
是否可以声明接受泛型类型节点的通用二叉树类,该节点可以包含通用类型的键值?我认为它看起来像这样....
class BinaryTree<N<K>> {
N<K> root;
BinaryTree<N<K>> left, right;
...
}
对任何明显的误解表示道歉,我仍然试图通过Java来获取泛型和语法,我将非常感谢任何帮助或见解。
谢谢!
答案 0 :(得分:1)
二叉树结构基本上只包含对根节点的引用。所以它应该具有与其节点相同的类型参数:
class BinaryTree<K extends Comparable<K>> {
Node<K> root;
}
或者是键值设计:
class KeyValueBinaryTree<K extends Comparable<K>, V> {
KeyValueNode<K, V> root;
}
请注意,是否需要封闭树类是有争议的,因为它是指向彼此的节点。
答案 1 :(得分:0)
你可以说:
class BinaryTree<N extends Node<N>> {
Node<N> root;
// or even better: N root;
BinaryTree<N> left, right;
}
让BinaryTree<Node<K>>
没有按照the purpose of defining a generic type参数化类。
答案 2 :(得分:0)
这就是我编写通用二叉树类的方法
public class BinaryTree<N extends Node<K>, K extends Comparable> {
N root;
BinaryTree<N, K> left, right;
}
(虽然我假设你不会真的在二叉树中讲述BinaryTree,这只是为了展示如何宣布它的例子)