вернуть max и min в двоичном дереве - PullRequest
1 голос
/ 05 июня 2019

Мы хотим написать функцию, которая принимает корень двоичного дерева в качестве входных данных и возвращает max и min этого дерева, используя класс 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;
}

Я ожидаю, что ответ будет правильным, но получаю ошибку во время выполнения во всех тестовых случаях.

1 Ответ

0 голосов
/ 05 июня 2019

Рассмотрим дерево с двумя узлами.Вы можете ясно видеть ошибку во время выполнения.

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