得到父母的数量等于孩子的总和

时间:2013-11-23 15:31:11

标签: sum children

我遇到以下代码的问题。我需要得到它的价值=父母的数量= 2个孩子的总和。例如,如果父值= 10且其子项为2和8。     然后我必须将此父级计为1.我需要检查树中的所有节点。

this is what i tried to do: could you please advise:


int BinaryTree::numberOfSum (){
return numberOfSumImpl (root);
}
int BinaryTree::numberOfSumImpl (BTNode *rootNode, int el){
    if(rootNode ==0) return 0;
    int count=0;
        if(rootNode->hasTwoChildren() || rootNode->isLeaf()) 
        else if{
            if (rootNode->info==el) return count=1;
        return count + numberOfSumImpl(el,rootNode->left) + numberOfSumImpl(el,rootNode->right);
        }
}


Many Thanks, 

1 个答案:

答案 0 :(得分:0)

numberOfSumImpl的调用似乎有一些问题,因为在main函数中它只用一个参数调用,而在递归函数中它用两个参数调用,但顺序反转。这段代码甚至没有编译!

此外,条件rootNode->hasTwoChildren() || rootNode->isLeaf())看起来很奇怪,让它的身体变得更加奇怪。

您没有发布BTNode的定义,但看起来您正在寻找某些内容

int BinaryTree::numberOfSumImpl (BTNode* p) {
    if (not p) return 0;
    int count;
    if (p->hasTwoChildren() and p->info == p->left->info + p->right->info) {
        count = 1;
    } else {
        count = 0;
    }
    return count + numberOfSumImpl(p->left) + numberOfSumImpl(p->right);
}

此功能可能是static