Diameter of Binary tree

static int tree_height(const Node* root, int& max_distance)

{

  const int left_height  = root->left  ? tree_height(root->left,  max_distance)  + 1 : 0;

  const int right_height = root->right ? tree_height(root->right, max_distance)  + 1 : 0;

  const int distance = left_height + right_height;

  if (max_distance < distance) max_distance = distance;

  return (left_height > right_height ? left_height : right_height);

}

 

int tree_diameter(const Node* root)

{

  int max_distance = 0;

  if (root) tree_height(root, max_distance);

  return max_distance;

}

這種思路很簡單,再求Height的時候順便求出每一個Node的左右子樹的Height的最大值spa

相關文章
相關標籤/搜索