首页 > 解决方案 > 如何摆脱递归?C 编程

问题描述

我有一个三叉树,每个节点都有 id 和 name 当 root->id=id 时如何返回 true 并中断递归

BOOLEAN isIdUsed(Trin_Ari *root,int idNumber) {
    if (root==NULL)
        return FALSE;
    if (root->id==idNumber)
        return TRUE;
    isIdUsed(root->left,idNumber);
    isIdUsed(root->middle,idNumber);
    isIdUsed(root->right,idNumber);
    return FALSE;
}

标签: crecursion

解决方案


您忽略了对isIdUsed. 一旦你在那里遇到一个TRUE,你需要向上传播它:

BOOLEAN isIdUsed(Trin_Ari *root,int idNumber) {
    if (root==NULL)
        return FALSE;
    if (root->id==idNumber)
        return TRUE;
    if (isIdUsed(root->left,idNumber))
        return TRUE;
    if (isIdUsed(root->middle,idNumber))
        return TRUE;
    if (isIdUsed(root->right,idNumber))
        return TRUE;
    return FALSE;
}

推荐阅读