我最近遇到了这个面试问题,即在二叉树中查找单个子树的数量。怎么办呢?
答案 0 :(得分:1)
我认为你的意思是"普遍价值子树" - see the description here
在这种情况下,您只需实现树的遍历,对于每个节点,如果其所有子节点都等于父节点,则添加1(因为您已经确定了通用值树)
答案 1 :(得分:1)
int countUniVals(node* head, bool* unival) {
if (!node) {
*unival = true;
return 0;
}
bool uniL,uniR;
int sum = countUniVals(head->l, &uniL) + countUniVals(head->r, &uniR);
if (uniL && uniR &&
(!head->l || head->l->val == head->val) &&
(!head->r || head->r->val == head->val)) {
sum++;
*unival = true;
}
return sum;
}