leetcode 687 最大同值二叉树路径

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++,就会出错。

猜你喜欢

转载自blog.csdn.net/esjiang/article/details/107124935