0
私はバイナリツリーで最小値を見つけようとしています。このため、私は次のように再帰的な方法を使用しています。再帰実行中に関数に引数として渡された値を返す
int FindMinBinaryTree(struct TreeNode* root,int min)
{
if(root!=NULL)
{
if(root->data<min)
{
min=root->data;
printf("%d ",root->data);
}
min=FindMinBinaryTree(root->left,min);
min=FindMinBinaryTree(root->right,min);
}
return min;
}
ここでは、関数を呼び出すときに引数としてINT_MAXを渡しました。この方法は完全に機能します。
int findMin(struct node* root)
{
// Base case
if (root == NULL)
return INT_MAX;
// Return minimum of 3 values:
// 1) Root's data 2) Min in Left Subtree
// 3) Min in right subtree
int res = root->data;
int lres = findMin(root->left);
int rres = findMin(root->right);
if (lres < res)
res = lres;
if (rres < res)
res = rres;
return res;
}
私の質問、それは再帰では、引数として渡された値を返す保つために良い練習があるさ:しかし、いくつかの文章で私が最小値を求めるための次の実装を発見しましたか?