Advertisement
hamaXD

lab 9 แบบไม่printf

Nov 21st, 2017
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.21 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. struct treenode {
  5.     struct treenode *left;
  6.     struct treenode *right;
  7.     int data;
  8. };
  9. typedef struct treenode TREENODE;
  10. typedef TREENODE *TREE;
  11.  
  12. void insert_node(TREE *tp, int value);
  13. int is_perfect_tree(TREE t);
  14.  
  15.  
  16. int main(){
  17.     TREE t = NULL;
  18.     int i = 0, tmp;
  19.     do{
  20.         printf("N%02d: ", i + 1);
  21.         scanf(" %d", &tmp);
  22.         if(tmp<=0){
  23.             break;
  24.         }
  25.         insert_node(&t,tmp);
  26.         i++;
  27.     }while(tmp > 0);
  28.     printf(" = %s\n", is_perfect_tree(t) ? "Yes" : "No");
  29.     return 0;
  30. }
  31. void insert_node(TREE *tp, int value) {
  32.     if (*tp == NULL) {
  33.         *tp = malloc(sizeof(TREENODE));
  34.         (*tp)->data = value;  
  35.         (*tp)->left = NULL;
  36.         (*tp)->right = NULL;
  37.     }else if (value < (*tp)->data ){
  38.         insert_node(&((*tp)->left), value);
  39.     }else if (value > (*tp)->data ){
  40.         insert_node(&((*tp)->right), value);
  41.     }else{
  42.         printf("duplicate node\n");
  43.     }
  44. }
  45.  
  46.  
  47. int is_perfect_tree(TREE t){
  48.     if(t == NULL){
  49.         printf("nullALL\n");
  50.         return 1;
  51.     }else if(t->left==NULL&&t->right==NULL){
  52.         printf("null2\n");
  53.         return 1;
  54.     }else if(t->left==NULL||t->right==NULL){
  55.         printf("null1\n");
  56.         return 0;
  57.     }else{
  58.         printf("NOnull\n");
  59.         return is_perfect_tree(t->left)&&is_perfect_tree(t->right);
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement