另一个类初始化类的方式

问题描述:

虽然编码关于对本文给出了二叉搜索树的问题,我想出了以下情况:另一个类初始化类的方式

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定义为临时变量。

TreeNode类不具有一个无参数的构造函数。

既然你已经定义了一个构造函数int参数编译器将不会为您创建一个默认的构造函数。

是这样的(假设它是有道理的),将工作:

TreeNode cust = new TreeNode(someIntValue); 
+0

哦!得到它了 !非常感谢你! – beepretty

树节点构造函数的参数整数X,所以如果你只写 “树节点CURR =新的TreeNode();”,则将是一个错误。所有你需要做的是为参数添加一个int。

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

只需添加任何int值。

+0

非常感谢! – beepretty

Java允许你只使用的情况下,默认的构造函数(与无参数构造函数),你没有明确地在类中创建你自己的构造函数。 一旦你创建自己的构造函数,就你的情况TreeNode(int x) { val = x; }你不能再使用该类的默认构造函数。

+0

是啊!非常感谢! – beepretty