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;
}
我的問題是,它是一個很好的做法,回頭率在遞歸參數傳遞的價值觀?