尝试用递归,dfs,bfs改进,同时算法也有需要改进的地方
class Solution {
public:
//递归的写法
//思路如下:①用两个变量表示左右节点相同的边的个数。例如node和node->left相同,则left+1
//②最大值就是比较两个相加和最大值之间的关系,为什么相加自己想一下
//③返回值也很重要,把最大的那个留着,小的肯定没用了
int intLeft=0;
int intRight=0;
int left=GetMax(node->left);
int right=GetMax(node->right);
if(node->left!=nullptr&&node->val==node->left->val){
intLeft=left+1;
}
if(node->right!=nullptr&&node->val==node->right->val){
intRight=right+1;
}
max=max>intRight+intLeft?max:intRight+intLeft;
return intLeft>intRight?intLeft:intRight;
}
};