fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<limits.h>
  4. #include<stdbool.h>
  5.  
  6. typedef struct node {
  7. int val;
  8. struct node *next;
  9. } node;
  10.  
  11. typedef struct Treenode {
  12. int val;
  13. struct Treenode *left;
  14. struct Treenode *right;
  15. } Treenode;
  16.  
  17. Treenode *createnode(){
  18. Treenode *totree = (Treenode*)malloc(sizeof(Treenode));
  19. totree->left=NULL;
  20. totree->right=NULL;
  21. return totree;
  22. }
  23.  
  24. void InOrder(Treenode *root){
  25. if(!root) return;
  26. InOrder(root->left);
  27. printf("%d ",root->val);
  28. InOrder(root->right);
  29. }
  30.  
  31. void preOrder(Treenode *root){
  32. if(!root) return;
  33. printf("%d ",root->val);
  34. preOrder(root->left);
  35. preOrder(root->right);
  36. }
  37.  
  38. void PostOrder(Treenode *root){
  39. if(!root) return;
  40. PostOrder(root->left);
  41. PostOrder(root->right);
  42. printf("%d ",root->val);
  43. }
  44.  
  45. Treenode *arrayTotree(int *a, int size ,int i){
  46. if(i>=size) return NULL;
  47. Treenode *root=createnode();
  48. root->val=a[i];
  49. root->left=arrayTotree(a,size,2*i+1);
  50. root->right=arrayTotree(a,size,2*i+2);
  51. return root;
  52. }
  53.  
  54. bool isMirror_help(Treenode *p,Treenode *q){
  55. if(!p && !q) return true;
  56. else if(!p || !q) return false;
  57. if(p->val != q->val) return false;
  58. return isMirror_help(p->left,q->right) && isMirror_help(p->right,q->left);
  59. }
  60.  
  61. bool isMirror(Treenode *root){
  62. if(!root) return true;
  63. return isMirror_help(root->left,root->right);
  64. }
  65.  
  66.  
  67. int main(){
  68.  
  69. Treenode *root=createnode();
  70. root->val=1;
  71. Treenode *left=createnode();
  72. left->val=2;
  73. Treenode *right=createnode();
  74. right->val=3;
  75.  
  76. int mehdi[]={1,2,3,4,5};
  77.  
  78. root->right=right;
  79. root->left=left;
  80.  
  81. InOrder(root);
  82. printf("\n");
  83.  
  84. PostOrder(root);
  85. printf("\n");
  86.  
  87. preOrder(root);
  88. printf("\n");
  89.  
  90. if(!isMirror(root)) printf("Nice\n");
  91.  
  92. Treenode *newnode= arrayTotree(mehdi,5,0);
  93. InOrder(newnode);
  94. printf("\n");
  95.  
  96. }
  97.  
  98.  
  99.  
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
2 1 3 
2 3 1 
1 2 3 
Nice
4 2 5 1 3