首页 > 解决方案 > 返回二叉树中的最大值和最小值

问题描述

我们想编写一个函数,将二叉树的根作为输入,并使用类 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;
}

我希望答案是正确的,但在所有测试用例中都出现运行时错误。

标签: c++data-structuresbinary-tree

解决方案


考虑一棵有两个节点的树。您可以清楚地看到运行时错误。

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;
    }

推荐阅读