需要解释树的java类构造函数吗

需要解释树的java类构造函数吗,java,tree,nodes,Java,Tree,Nodes,在算法问题中,描述如下: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ 我的问题1:很难理解什么是TreeNode(intx){val=x;}请解释这一行的意思。为什么这是必要的 我的问题2:如

在算法问题中,描述如下:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
我的问题1:很难理解什么是
TreeNode(intx){val=x;}
请解释这一行的意思。为什么这是必要的

我的问题2:如何将
TreeNode(intx){val=x;}
放入构造函数的实际代码中?这是我到目前为止尝试的结果,但出现错误:

  TreeNode (int val, TreeNode left, TreeNode right, TreeNode x){
    this.left = left;
    this.right = right;
    this.x = { val = x; }
    this.val = val;
  }
}

错误:表达式在第
行this.x={val=x;}

处非法开始。您似乎被格式设置所蒙蔽。第一个构造函数不应该出现在注释中。相反,您的类可以如下所示:

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); 
  }

换句话说:当您创建第一个节点时,您只需要一个值,此时它的左/右子节点为空。因此,第一个构造函数不需要两个不同的构造函数体,而只需调用第二个构造函数(以避免代码重复)。

这是非常标准的java内容。在进入数据结构/算法之前,先学习基本知识。欣赏快速接受。我也同意:这是基本的东西。通常我只会发表评论,但我需要足够的空间来理解核心观点。@GhostCat我同意。我感到困惑,认为行也是字段类型和字段名。努力摆脱这种困惑。但你能马上明白我的想法真是太好了谢谢!这回答了我的问题。但你的帖子有一个问题,你的意思是我不需要第二个构造函数,只有第一个构造函数可以负责创建第一个节点,左和右都为null,并将左/右节点添加到第一个节点?是的,这是可能的。