文章

65

粉丝

25

获赞

661

访问

18.7k

头像
二叉排序树 - 华科 题解:把父亲结点当做参数传进来就好了,easy
P1396 华中科技大学
发布于2025年3月7日 10:59
阅读数 360

#include <bits/stdc++.h>  
using namespace std;  
typedef struct node{
    int data;
    struct node *lchild,*rchild;
} *btree;
void ct(btree &T,int x,int father){//注意应使用引用! 
    if(T==NULL){
        T=new node;
        T->data=x;
        T->lchild=NULL;
        T->rchild=NULL;
        cout<<father<<endl;
        return;
    }
    if(x==T->data) return;
    else if(x<T->data) ct(T->lchild,x,T->data);
    else if(x>T->data) ct(T->rchild,x,T->data);
}

int main(){  
    int n;
    while(cin>>n) {
        btree T=NULL;
    &nb...

登录查看完整内容


登录后发布评论

1 条评论
riddle
2025年3月15日 17:44

#include <iostream>
using namespace std;

typedef struct node
{
    int data;
    struct node* lchild;
    struct node* rchild;
} *Tree;

// 创建二叉搜索树
void CreateTree(Tree& T, int x)
{
    if (T == NULL)
    {
        T = new node;
        T->lchild = NULL;
        T->rchild = NULL;
        T->data = x;
        cout << "-1" << endl; // 插入根节点时输出 -1
        return; // 直接返回,避免后续操作
    }
    if (T->data == x)
    {
        return; // 有相同元素直接返回
    }
    else if (T->data > x)
    {
        cout << T->data << endl; // 输出当前节点值
        CreateTree(T->lchild, x); // 递归插入左子树
    }
    else
    {
        cout << T->data << endl; // 输出当前节点值
        CreateTree(T->rchild, x); // 递归插入右子树
    }
}

int main()
{
    int N;
    while (cin >> N)
    {
        Tree T = NULL; // 每次输入 N 时重新创建一棵树
        int x;
        for (int i = 0; i < N; i++)
        {
            cin >> x;
            CreateTree(T, x);
        }
    }
    return 0;
}

这么写是哪里有问题啊,能请问下吗

 

赞(0)