这是我在Java中定义二叉树的代码
// Class definition for binary tree
// Class for storing a single node of a binary tree of ints
// Cannot be set to be private because this should be accessed by the public class method
public class IntTreeNode {
public int data;
public IntTreeNode left;
public IntTreeNode right;
// constructs a leaf node with given data
public IntTreeNode(int data) {
this(data, null, null);
}
// constructs a branch node with given data, left subtree,
// right subtree
public IntTreeNode(int data, IntTreeNode left,
IntTreeNode right) {
this.data = data;
this.left = left;
this.right = right;
}
}
请问为什么我们应该有两个构造函数,公共IntTreeNode(int数据)和公共IntTreeNode(int数据,IntTreeNode左边,IntTreeNode右边)?我从客户端类运行了没有公共IntTreeNode(int data)的代码,它也可以工作。
最佳答案
仅使用public IntTreeNode(int data, IntTreeNode left, IntTreeNode right)
运行代码将是完全合法的代码。
这里的2个构造函数是为了方便起见。对于叶节点,不可能有子树。因此,单参数构造函数提供了一种添加叶节点的便捷方法,其子树默认为null
。另一方面,任何非叶节点最多可以具有2个子树,因此存在第二个构造函数来创建此类节点。
关于java - 为什么我们需要多个构造函数来用Java定义二叉树?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24794697/