数据结构实验之查找一:二叉排序树

    xiaoxiao2026-06-07  3

    这道题的算法思想是:建立一个初始的排序二叉树,然后比较由输入序列建立的另一个二叉树即可。

    代码如下:

    #include <stdio.h> #include <malloc.h> struct node{/*二叉树的定义*/     int data;     struct node *lchild,*rchild; }; struct node *Createtree(struct node *root,int d){/*创建排序二叉树*/     if(root==NULL){         root=(struct node *)malloc(sizeof(struct node));         root->data=d;         root->lchild=NULL;         root->rchild=NULL;     }     else{         if(root->data<d)//输入的元素大于根节点,放入右子树中             root->rchild=Createtree(root->rchild,d);         else             root->lchild=Createtree(root->lchild,d);     }     return root; }; int Compare(struct node* root,struct node *root1){/*判断两个数是否相等*/     if(root==NULL&&root1==NULL)         return 1;     else if((root==NULL&&root1!=NULL)||(root!=NULL&&root1==NULL))         return 0;     else if(root->data==root1->data)             return Compare(root->lchild,root1->lchild)&&Compare(root->rchild,root1->rchild);     else         return 0; } int main(){     int n,l,d,i;     while(scanf("%d %d",&n,&l)&&n!=0){         struct node *root=NULL;         for(i=1;i<=n;i++){             scanf("%d",&d);             root=Createtree(root,d);         }         while(l--){             struct node *root1=NULL;             for(i=1;i<=n;i++){                 scanf("%d",&d);                 root1=Createtree(root1,d);             }             if(Compare(root,root1))                 printf("Yes\n");             else                 printf("No\n");         }     }     return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1310272.html
    最新回复(0)