首页 > 其他 > 详细

[Locked] Count Univalue Subtrees

时间:2016-02-24 13:55:41      阅读:234      评论:0      收藏:0      [点我收藏+]

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

原文:http://www.cnblogs.com/littletail/p/5208067.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!