首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >声明一个二叉树,它接受一个包含键值泛型类型的泛型Node?

声明一个二叉树,它接受一个包含键值泛型类型的泛型Node?
EN

Stack Overflow用户
提问于 2012-04-22 14:47:18
回答 3查看 2K关注 0票数 1

如果我有一个节点类可以接受它的键值的泛型类型:

代码语言:javascript
复制
class Node<K extends Comparable<K>> implements Comparable<Node<K> {
    ...
}

class KeyValueNode<K extends Comparable<K>, V> extends Node<K> {
    ...
}

是否可以声明一个接受泛型类型节点的泛型二叉树类,它可以包含泛型键值?我想它应该是这样的……

代码语言:javascript
复制
class BinaryTree<N<K>> {
    N<K> root;
    BinaryTree<N<K>> left, right;
    ...
}

对于任何明显的误解,我很抱歉,我仍在努力掌握Java中泛型和语法的诀窍,如果有任何帮助或见解,我将非常感激。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-23 10:38:56

二叉树结构本质上只包含对根节点的引用。因此,它应该具有与其节点相同的类型参数:

代码语言:javascript
复制
class BinaryTree<K extends Comparable<K>> {

    Node<K> root;
}

或者对于键值设计:

代码语言:javascript
复制
class KeyValueBinaryTree<K extends Comparable<K>, V> {

    KeyValueNode<K, V> root;
}

请注意,封闭的树类是否是必要的还存在争议,因为它是相互指向的节点。

票数 1
EN

Stack Overflow用户

发布于 2012-04-22 15:08:02

你可以说:

代码语言:javascript
复制
class BinaryTree<N extends Node<N>> {
  Node<N> root; 
  // or even better: N root;
  BinaryTree<N> left, right;
}

the purpose of defining a generic type不同,使用BinaryTree<Node<K>>不是对类进行参数化。

票数 0
EN

Stack Overflow用户

发布于 2012-04-22 15:14:49

这就是我编写泛型二进制树类的方式

代码语言:javascript
复制
public class BinaryTree<N extends Node<K>, K extends Comparable> {
    N root;
    BinaryTree<N, K> left, right;
}

(尽管我假设您不会真的在二叉树中讲述BinaryTree,这只是为了说明如何声明它)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10265836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档