treeDiameter<T> function

int treeDiameter<T>(
  1. BinaryTreeNode<T>? root
)

Implementation

int treeDiameter<T>(BinaryTreeNode<T>? root) {
  int maxDiameter = 0;

  int height(BinaryTreeNode<T>? node) {
    if (node == null) return 0;

    final int leftHeight = height(node.left);
    final int rightHeight = height(node.right);

    // Update max diameter if current path is longer
    maxDiameter =
        maxDiameter > (leftHeight + rightHeight)
            ? maxDiameter
            : (leftHeight + rightHeight);

    return 1 + (leftHeight > rightHeight ? leftHeight : rightHeight);
  }

  height(root);
  return maxDiameter;
}