这是我在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/

10-11 04:31