题目描述:
给定一个二叉树,统计该二叉树数值相同的子树个数。
同值子树是指该子树的所有节点都拥有相同的数值。
示例:
输入: root = [5,1,5,5,5,null,5]
5
/ \
1 5
/ \ \
5 5 5
输出: 4
方法1:递归
主要思路:
(1)统计的是具有相同值的子树,故考虑后续遍历,在获得某个结点的左,右子树是否是相同值的子树结果后,在比较左右结点和当前结点的值是否相同,最终据定当前结点作为根节点的子树,是否是具有相同值的子树;
(2)统计满足要求的子树数量的变量,则叶子结点处直接将该变量加一,在满足要求的结点作为根节点处,该变量加1;
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool helper(TreeNode* root,int