我正在尝试获取不是自己的数字的最低倍数,因此我找不到解决方法。假设我有一个数字搜索二叉树。
我想找到树根的最低倍数,而不是根本身。因此,如果我在给定的树上具有以下值:[2、6、4、9、12],我想找到2的最小倍数,在这种情况下为4。
现在,当我对此进行编码时,我提出的所有算法都将返回根的最低倍数,即...本身。如何找到要查找的“ 4”?
PS:很抱歉,如果问题很奇怪,我不是母语人士。
最佳答案
该算法非常简单。给定x =在树的根处的值,您将编写一个递归函数,该函数将返回x的最小倍数,该最小倍数大于在树中找到的x;如果不存在所有倍数,则返回0。
int recursive (node* root, int x) {
int result = 0;
if (root->value > x && root->value % x == 0)
result = root->value;
if (root->left != NULL) {
int left = recursive (root->left, x);
if (left != 0 && (result == 0 || left < result))
result = left;
}
if (root->right != NULL) {
int right = recursive (root->right, x);
if (right != 0 && (result == 0 || right < result))
result = right;
}
return result;
}
然后,您将int结果=递归调用(根,根->值)。
关于c - 如何获取输入的数字的最低倍数,而不是输入的数字本身?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58866602/