【发布时间】:2014-07-06 09:37:57
【问题描述】:
Java中基本的二叉树节点可以定义为:
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
但在许多情况下,我需要向树节点添加字段,例如大小、高度、深度或颜色。 如果我不想重写左子节点和右子节点的所有定义并尝试直接继承:
public class TreeNodeWithDepth extends TreeNode{
int depth;
TreeNodeWithDepth(int val, int depth) {
super(val);
this.depth = depth;
}
}
不行,因为TreeNodeWithDepth的左右还是TreeNode。
有没有更好的方式来描述这种继承?
【问题讨论】:
-
您确定要直接在树的节点上使用大小、高度和颜色等属性吗?似乎不是存储您的 int val,您应该为所需的所有属性创建一个包装器对象,然后将它们存储在该对象中,而不是直接存储在树节点上。 (见亚历克斯的回答)
-
Java 类继承:一次都没有。
标签: java inheritance