在另一个类中初始化类的方法

时间:2015-07-21 22:15:05

标签: java

在Leetcode上编码关于二元搜索树的问题时,我的情况如下:

public class TreeNode {
  int val;
  TreeNode left;
  TreeNode right;
  TreeNode(int x) { val = x; }
}

public class Solution {
    public List<Integer> inorderTraversal (TreeNode root) { 
 // the variables below are defined by myself.

        Stack <TreeNode> stack = new Stack<TreeNode>();
        ArrayList<Integer> res = new ArrayList<Integer>();
        TreeNode curr = root; 
        ...
    }
}

在最后一行中,我定义了TreeNode并使其等于root。但如果我写作

TreeNode curr = new TreeNode()

编译器引发错误。我不知道为什么我不能以这种方式将TreeNode定义为临时变量。

3 个答案:

答案 0 :(得分:4)

您的TreeNode类没有无参构造函数。

由于您已经使用int参数定义了构造函数,因此编译器不会为您创建默认构造函数。

这样的事情(假设它有意义)将起作用:

TreeNode cust = new TreeNode(someIntValue);

答案 1 :(得分:2)

TreeNode构造函数具有参数int x,因此如果只编写“TreeNode curr = new TreeNode();”,则会出现错误。您需要做的就是为参数添加一个int。

解决方案:“TreeNode curr = new TreeNode(4);”

只需添加任何int值。

答案 2 :(得分:2)

Java允许您使用默认构造函数(没有args的构造函数),以防您未在类中显式创建自己的构造函数。 一旦你创建了自己的构造函数,在你的情况TreeNode(int x) { val = x; }中你就不能再使用该类的默认构造函数了。