这就是我的代码的外观
int main() {
//root is the rootnode of the tree
if(root!==NULL) {
int mini = min(root, root->data);
printf("minimum number is %d", mini);
}
return 0;
}
int min(node *root, int mini) {
if(root == NULL) {
return;
}
min(root->left, mini);
min(root->right, mini);
if(mini > root->data) {
mini = root->data;
}
return mini;
}
它没有给我树中的最小数字。相反,它将根节点打印为最小值。
答案 0 :(得分:4)
您需要使用递归调用的结果而不是丢弃它们 它们应该是子树的最小值。
树中的最小值是
的最小值像这样:
int min(node *root)
{
int least = root->data;
if (root->left != NULL)
{
least = std::min(least, min(root->left));
}
if (root->right != NULL)
{
least = std::min(least, min(root->right));
}
return least;
}
答案 1 :(得分:0)
试试这个:
int min(node *root, int mini) {
if(root == NULL) {
return -1;
}
int a;
a=min(root->left, mini);
if(a<mini)
mini=a;
a=min(root->right, mini);
if(a<mini)
mini=a;
if(root->data<mini)
mini = root->data;
return mini;
}
答案 2 :(得分:0)
这对我有用。不丢弃返回值。
int main() {
//root is the rootnode of the tree
if(root!==NULL) {
int mini = min(root, root->data);
printf("minimum number is %d", mini);
}
return 0;
}
int min(node *root, int mini) {
if(root == NULL) {
return;
}
mini = min(root->left, mini);
mini = min(root->right, mini);
if(mini > root->data) {
mini = root->data;
}
return mini;
}