我正在尝试练习泛型和多态。我有一个Node类,如下所示:
public class Node<T> {
public T name;
public Node[] children;
}
然后是一个通用的Tree类:
public class Tree<T> {
public Node<T> root;
}
现在,我正在尝试实现一个二叉树。二叉树is a树,因此满足is a多态性规则。我正在努力如何强制二叉树中的节点最多可以有两个孩子。
我应该将节点类扩展到Binary节点,并且子数组始终初始化为大小2吗?如果BinaryTree扩展Tree,如何在children成员变量上施加限制?
就像我想做的一样:
BinryTree extends Tree
BinaryTreeNode extends Node
其中Node是Tree中的成员变量,BinaryTreeNode是BinaryTree中的成员变量。什么是合适的设计?
关于:
public class Node<T> {
public T name;
public Node[] children;
public Node(int numOfChildren) { children = new Node[numOfChildren]; }
}
如果您希望节点容纳2个节点,请使用2调用构造函数,这样子级将最多容纳2个节点。另外,最好使用封装并将子项设置为私有,并提供使用getter和setter的可访问性:
public class Node<T> {
public T name;
final private Node[] children;
public Node(int numOfChildren) { children = new Node[numOfChildren]; }
public Node getChildren() { return children; }
public void setChildren(Node newChildren) { children = newChildren; }
}