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++,就会出错。
转载请注明原文地址:https://ipadbbs.8miu.com/read-58666.html