我遇到以下代码的问题。我需要得到它的价值=父母的数量= 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,
答案 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
。