BSTの直径を見つける方法を知っています。
int diameter(struct node * tree)
{
if (tree == 0)
return 0;
int lheight = height(tree->left);
int rheight = height(tree->right);
int ldiameter = diameter(tree->left);
int rdiameter = diameter(tree->right);
return max(lheight + rheight + 1, max(ldiameter, rdiameter));
}
int height(struct node* node)
{
if(node == NULL)
return 0;
return 1 + max(height(node->left), height(node->right));
}
パスを印刷するには、コードにどのような変更を加える必要がありますか。つまり、ツリーの直径に対応するノードを、直径の1つのリーフノードから別のリーフノードに順番に出力します。
例えば:-
8
/ \
1 12
\ /
5 9
/ \
4 7
/
6
出力は675 1 8129である必要があります