c++ - 返回二叉树中的最大值和最小值
问题描述
我们想编写一个函数,将二叉树的根作为输入,并使用类 PairAns 返回该树的最大值和最小值。
我在这个问题的基本情况下遇到了一些问题
PairAns minMax(BinaryTreeNode<int> *root) {
PairAns ans;
ans.max=INT_MIN;
ans.min=INT_MAX;
if(root->left==NULL&&root->right==NULL){
ans.max=root->data;
ans.min=root->data;
return ans;
}
PairAns smallans1=minMax(root->left);
PairAns smallans2=minMax(root->right);
ans.max=max(max(smallans1.max,smallans2.max),root->data);
ans.min=min(min(smallans1.min,smallans2.min),root->data);
return ans;
}
我希望答案是正确的,但在所有测试用例中都出现运行时错误。
解决方案
考虑一棵有两个节点的树。您可以清楚地看到运行时错误。
PairAns minMax(BinaryTreeNode<int> *root) {
PairAns ans;`enter code here`
ans.max=INT_MIN;
ans.min=INT_MAX;
if(root == NULL)
return ans;
if(root->left==NULL&&root->right==NULL){
ans.max=root->data;
ans.min=root->data;
return ans;
}
PairAns smallans1=minMax(root->left);
PairAns smallans2=minMax(root->right);
ans.max=max(max(smallans1.max,smallans2.max),root->data);
ans.min=min(min(smallans1.min,smallans2.min),root->data);
return ans;
}
推荐阅读
- javascript - RFC822 正则表达式无法拒绝 JavaScript 中的某些电子邮件地址
- versioning - -next 在语义版本控制中的含义
- c++ - 自定义 std::ostream 子类中的运算符 << 重载的歧义错误
- angular - Angular - 在按下选项卡时动态添加一组字段
- javascript - 在 JavaScript 中使用 Asp.Net WebForms 上的资源本地化文本
- latex - 无法使用 TeXStudio 编译 Minted 环境
- java - 使用 VLCj 和 Java Swing 冻结/延迟图像
- r - 获取包含特征的文档百分比 - quanteda
- php - 在 Doctrine Fixtures Symfony 4 中执行 SQL
- java - 扩展类中的 Spring Boot @Service 注解