我正在尝试获取不是自己的数字的最低倍数,因此我找不到解决方法。假设我有一个数字搜索二叉树。

我想找到树根的最低倍数,而不是根本身。因此,如果我在给定的树上具有以下值:[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/

10-10 21:21