leetcode 1373 二叉搜索子树的最大键值和
leetcode 1373 二叉搜索子树的最大键值和
题目描述:
本题主要考察二叉树的后续遍历,由于后序遍历可以拿到根节点左右子树的信息,我们可以通过对左右子树后续遍历,得到左右子树的四个有用的信息,1、是不是二叉搜索树 2、子树的最大值 3、子树的最小值 4、子树的和。
通过给dfs函数设置合适的返回值,得到子树的相关信息,使用数组存储子树的四个相关信息,可以写出如下代码:
class Solution {
public:
int maxres=0;
int maxSumBST(TreeNode* root) {
getsumbst(root);
return maxres;
}
vector<int> getsumbst(TreeNode* root){
vector<int> res(4);
if(root==nullptr){
res[0]=1;
res[1]=INT_MAX;
res[2]=INT_MIN;
res[3]=0;
return res;
}
vector<int> left=getsumbst(root->left);
vector<int> right=getsumbst(root->right);
if(left[0]==1&&right[0]==1&&root->val>left[2]&&root->val<right[1]){
res[0]=1;
res[1]=min(left[1],root->val);
res[2]=max(right[2],root->val);
res[3]+=left[3]+right[3]+root->val;
maxres=max(maxres,res[3]);
}else{
res[0]=0;
}
return res;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了