谁能更好地逐行解释这段代码的作用

Who can better explain what this snippet of code does line by line

我试图理解这段代码,但我完全没有理解。关于 math.Max() 如何找到树的高度的解释

  /**
   * @return {number}
   */
  get leftHeight() {
    if (!this.left) {
      return 0;
    }

    return this.left.height + 1;
  }

  /**
   * @return {number}
   */
  get rightHeight() {
    if (!this.right) {
      return 0;
    }

    return this.right.height + 1;
  }

  /**
   * @return {number}
   */
  get height() {
    return Math.max(this.leftHeight, this.rightHeight);
  }

get leftHeight()get rightHeight() 是递归的,因为它们自称。 get leftHeight() 将 return 您可以从给定节点向左走多少次,get rightHeight() 将 return 您可以从给定节点向右走多少次。 get height()会return取最大的那个,其实不是节点的高度

例如:

这棵树的顶部2节点的.height将是连续向左走的最大值:2(2,7,2)和连续向右走的最大值:2(2,5 , 9), returning 2.

要获得此节点的实际高度,您需要 return .height 递归中的每个节点,因此最大高度将在每次递归时 returned .

get leftHeight()get rightHeight() 中的递归分别在 (!this.left)(!this.right) 为真时停止,这只是检查它是否未定义并且节点确实分别没有左节点或右节点。