leetcode 687 最大同值二叉树路径
class Solution {
public:
int longestUnivaluePath(TreeNode* root) {
if(!root) return 0;
traverse(root,0);
return res;
}
private:
int res;
int traverse(TreeNode* root,int cur){
if(!root) return 0;
int l = traverse(root->left,cur);
int r = traverse(root->right,cur);
int pl = 0;//清零计数器
int pr = 0;//清零计数器
if(root->left && root->left->val == root->val) pl = l+1;
if(root->right && root->right->val == root->val) pr = r+1;
cur =pl+pr;
res = max(res,cur);
return max(pl,pr);
}
};
声明并初始化变量 pl,pr的意义在于,题目求的是最大“同值”路径,不同的的需要清零。
直接对l++和r++,就会出错。