Вы, кажется, ослеплены форматированием.Первый конструктор не должен быть в комментарии.Вместо этого ваш класс может выглядеть так:
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
TreeNode (int val, TreeNode left, TreeNode right){
this.left = left;
this.right = right;
this.val = val;
}
Параметры конструкторов обычно присваиваются полям вашего класса.И вы просто запутались (сами), предполагая, что вам снова нужен этот { val = x }
фрагмент.Но этот фрагмент - всего лишь тело первого конструктора.
И если быть точным, на самом деле вы бы предпочли сделать что-то вроде
TreeNode(int x) {
this(x, null, null);
}
Другими словами: когда вы создаете свой первый узел, тогда вам нужен толькозначение, его левый / правый дочерние узлы в этом месте нулевые.Поэтому вместо двух разных конструкторов первый конструктор просто вызывает второй конструктор (чтобы избежать дублирования кода).