hdu 3791 二叉搜索树(二叉树)

来源:互联网 发布:软件游戏猎手 编辑:程序博客网 时间:2024/05/17 07:35

题目链接:hdu 3791 二叉搜索树


题目大意:中文题,略。


解题思路:先建树,然后比较各个对应位置上的值是否相同。


#include <stdio.h>#include <string.h>struct Node{    int val;    Node* left;    Node* right;    Node(){        val = 0;        left = right = NULL;    }};void Insert(Node* &root,int a){    if(root == NULL){        root = new Node;        root->val = a;    } else if(root->val > a)        Insert(root->left, a);    else        Insert(root->right, a);}bool equal_tree(Node* root, Node* root1){    if(root == NULL && root1 == NULL)        return true;    if (root != NULL && root1 != NULL) {        if (root->val != root1->val) return false;        if(equal_tree(root->left,root1->left)&&equal_tree(root->right,root1->right))            return true;        else             return false;    }    return false;}void Delete(Node* &root){    if(root->left != NULL)        Delete(root->left);    if(root->right != NULL)        Delete(root->right);    delete root;}const int N = 105;char node[N];int main(){    int n,a,flag,i,len,n1;    while(scanf("%d", &n) == 1 && n){        Node* root = NULL;        scanf("%s",node);        len=strlen(node);        for(i = 0; i < len; i++){            a = node[i]-'0';            Insert(root,a);        }        while(n--){            Node* root1 = NULL;            scanf("%s", node);            for(i = 0; i < len; i++){                a=node[i]-'0';                Insert(root1,a);            }            flag=equal_tree(root,root1);            if(flag==1)                printf("YES\n");            else                printf("NO\n");            Delete(root1);        }        Delete(root);    }    return 0;}


0 0