另一个类初始化类的方式
虽然编码关于对本文给出了二叉搜索树的问题,我想出了以下情况:另一个类初始化类的方式
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);
树节点构造函数的参数整数X,所以如果你只写 “树节点CURR =新的TreeNode();”,则将是一个错误。所有你需要做的是为参数添加一个int。
解决方案:“TreeNode curr = new TreeNode(4);”
只需添加任何int值。
非常感谢! – beepretty
Java允许你只使用的情况下,默认的构造函数(与无参数构造函数),你没有明确地在类中创建你自己的构造函数。 一旦你创建自己的构造函数,就你的情况TreeNode(int x) { val = x; }
你不能再使用该类的默认构造函数。
是啊!非常感谢! – beepretty
哦!得到它了 !非常感谢你! – beepretty