[Locked] Count Univalue Subtrees

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Locked] Count Univalue Subtrees相关的知识,希望对你有一定的参考价值。

Count Univalue Subtrees

Given a binary tree, count the number of uni-value subtrees.

A Uni-value subtree means all nodes of the subtree have the same value.

For example:
Given binary tree,

              5
             /             1   5
           / \             5   5   5

return 4.

分析:

  有点像自低向上的动态规划,既然是自底向上,看来用递归访问树的节点无疑可以解决问题

代码:

bool dfs(TreeNode *node, int &count) {
    if(!node)
        return true;
    //一定要让保证其先递归,达到最底层节点,然后作后续处理
    bool goodleft = dfs(node->left, count), goodright = dfs(node->right, count);
    //与左右节点值相同,且左右子树是值相同的树,则以该节点为根节点的树也是值相同的树
    if(goodleft && goodright && (!node->left || node->val == node->left->val) && (!node->right || node->val == node->right->val)) {
        count++;
        return true;
    }
    return false;
}
int count(TreeNode *node) {
    int num = 0;
    dfs(node, num);
    return num;
}

 

以上是关于[Locked] Count Univalue Subtrees的主要内容,如果未能解决你的问题,请参考以下文章

250. Count Univalue Subtrees

250. Count Univalue Subtrees

250. Count Univalue Subtrees

250. Count Univalue Subtrees

[LC] 250. Count Univalue Subtrees

LeetCode-Count Univalue Subtrees