样例过,0pts
查看原帖
样例过,0pts
1074084
asd890123楼主2024/6/29 21:50

#2RE,其余全T,为何?

#include <iostream>

#define debug(x) std::cout << #x << " = " << x << '\n'

struct node{

    int val;
    node* left = nullptr;
    node* right = nullptr;

    node(){}
    node(int _val):val(_val){}

}Tree;

node* buildTree(int val){return val ? new node(val) : nullptr;}

node* findTree(int val,node* tree = &Tree){

    node* ans = nullptr;

    if (tree->val == val) return tree;
    if (tree->left != nullptr) ans = findTree(val,tree->left);
    if (ans != nullptr) return ans;
    if (tree->right != nullptr) ans = findTree(val,tree->right);

    return ans;
}

int TreeDeep(node* tree = &Tree){

    int ans = 1;

    if (tree->left != nullptr) ans = std::max(ans,1 + TreeDeep(tree->left));
    if (tree->right != nullptr) ans = std::max(ans,1 + TreeDeep(tree->right));

    return ans;
}

int main(){

    #ifndef ONLINE_JUDGE
        freopen("P4913.in","r",stdin);
    #endif

    std::cin.tie(0)->sync_with_stdio(0);

    int n,l,r;

    std::cin >> n >> l >> r;
    Tree.left = buildTree(l);
    Tree.right = buildTree(r);
    for (int i = 2;i <= n;i++){

        std::cin >> l >> r;
        node* tmp = findTree(i);
        tmp->left = buildTree(l);
        tmp->right = buildTree(r);

    }
    std::cout << TreeDeep() << '\n';

    return 0;
}
2024/6/29 21:50
加载中...