250.统计同值子树

1. 题目

给定一个二叉树,统计该二叉树数值相同的子树个数

同值子树是指该子树的所有节点都拥有相同的数值

2. 解题

后序遍历,叶子节点肯定是一个同值子树

判断根节点和左右子树是否同值

3. 代码

    bool dfs(TreeNode* root)
    {
        if(!root) return true;
        bool l = dfs(root->left);//左子树都一样吗?
        bool r = dfs(root->right);
        if(!l || !r || (root->left && root->val != root->left->val) 
            ||(root->right && root->val != root->right->val))        
            return false;//左右子树有不一样 or root值跟左右不相等
        count++;
        return true;
    }
原文地址:https://www.cnblogs.com/mo-jian-ming/p/14555069.html