leetcode.5339. 二叉搜索子树的最大键值和

5339. 二叉搜索子树的最大键值和



图片说明



二叉搜索树判定


class Solution {
public:
    struct node{int v[4];};
    int ans=0;
    node dfs(TreeNode* &root){
        TreeNode* L=root->left;
        TreeNode* R=root->right;
        if(L==NULL||R==NULL){
            if(L&&!R){
                node V=dfs(L);
                if(root->val>V.v[0]&&V.v[3]){
                    ans=max(ans,V.v[2]);
                    ans=max(ans,V.v[2]+root->val);
                    return {max(V.v[0],root->val),min(V.v[1],root->val),V.v[2]+root->val,1};
                }
                return {max(V.v[0],root->val),min(V.v[1],root->val),V.v[2]+root->val,0};
            }else if(!L&&R){
                node V=dfs(R);
                if(root->val<V.v[1]&&V.v[3]){
                    ans=max(ans,V.v[2]);
                    ans=max(ans,V.v[2]+root->val);
                    return {max(V.v[0],root->val),min(V.v[1],root->val),V.v[2]+root->val,1};
                }
                return {max(V.v[0],root->val),min(V.v[1],root->val),V.v[2]+root->val,0};
            }else{
                ans=max(ans,root->val);
                return {root->val,root->val,root->val,1};
            }
        }
        node Lsum=dfs(L);
        node Rsum=dfs(R);
        if(root->val>Lsum.v[0]&&root->val<Rsum.v[1]&&Lsum.v[3]&&Rsum.v[3]){
            ans=max(ans,Lsum.v[2]+Rsum.v[2]+root->val);
            return {max(max(Lsum.v[0],Rsum.v[0]),root->val),min(min(Lsum.v[1],Rsum.v[1]),root->val),Lsum.v[2]+Rsum.v[2]+root->val,1};

        }
        return {max(max(Lsum.v[0],Rsum.v[0]),root->val),min(min(Lsum.v[1],Rsum.v[1]),root->val),Lsum.v[2]+Rsum.v[2]+root->val,0};
    }
    int maxSumBST(TreeNode* root) {
        if(root==NULL)return 0;
        dfs(root);
        return ans;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-27 14:11
很喜欢小米的新车,校招薪资每月22k,攒多久能买?
测试糕手手:别看工资,先看现金流存款。有50W存款以上再考虑,车是消耗品,选适合自己的重要。你有钱就当我没说过
点赞 评论 收藏
分享
Gaynes:查看图片
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务