Advertisement
phamanhtuan96

bt

Dec 15th, 2017
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.36 KB | None | 0 0
  1. #include<iostream>
  2. #include<conio.h>
  3. using namespace std;
  4. typedef struct node
  5. {
  6.     int data;
  7.     node *left,*right;
  8. };
  9. typedef node* tree;
  10. void Init(tree &root)
  11. {
  12.     root=NULL;
  13. }
  14. void TraverseNLR(tree root)
  15. {
  16.     if(root!=NULL)
  17.     {
  18.         cout<<root->data<<"\t";
  19.         TraverseNLR(root->left);
  20.         TraverseNLR(root->right);
  21.     }
  22. }
  23. void TraverseLNR(tree root)
  24. {
  25.     if(root!=NULL)
  26.     {
  27.         TraverseNLR(root->left);
  28.         cout<<root->data<<"\t";
  29.         TraverseNLR(root->right);
  30.     }
  31. }
  32. void TraverseLRN(tree root)
  33. {
  34.     if(root!=NULL)
  35.     {
  36.         TraverseNLR(root->left);
  37.         TraverseNLR(root->right);
  38.         cout<<root->data<<"\t";
  39.     }
  40. }
  41. int InsertTree( tree & root,int x)
  42. {
  43.     if(root!=NULL)
  44.     {
  45.         if(root->data==x)
  46.             return 0;
  47.         if(root->data>x)
  48.             return InsertTree(root->left,x);
  49.         else
  50.             return InsertTree(root->right,x);
  51.     }
  52.     else
  53.     {
  54.         root =new node;
  55.         if(root==NULL)
  56.             return -1;
  57.         root->data=x;
  58.         root->left=root->right=NULL;
  59.         return 1;
  60.     }
  61. }
  62. void CreateTree(tree &root)
  63. {
  64.     int x,n,t;
  65.     cout<<"Nhap vao so node:";
  66.     cin>>n;
  67.     for(int i=1;i<=n;i++)
  68.     {
  69.         cout<<"Node thu ["<<i<<"]=";
  70.         cin>>x;
  71.         t=InsertTree(root,x);
  72.         if(t==0)
  73.         {
  74.             cout<<"node co roi  !";
  75.             i--;
  76.         }
  77.         else if(t==-1)
  78.         {
  79.             cout<<"Bo nho day !";
  80.             getch();
  81.             exit(1);
  82.         }
  83.     }
  84. }
  85. void RemoveTree(tree &root)
  86. {
  87.     if(root!=NULL)
  88.     {
  89.         RemoveTree(root->left);
  90.         RemoveTree(root->right);
  91.         delete root;
  92.     }
  93. }
  94. int demnodeco1caycon(tree root)
  95. {
  96.     if(root==NULL)
  97.         return 0;
  98.     if((root->left==NULL && root->right!=NULL)||(root->left!=NULL && root->right==NULL))
  99.         return 1+demnodeco1caycon(root->left)+demnodeco1caycon(root->right);
  100.     return 1;
  101. }
  102. int tonggiatrinode1caycon(tree root)
  103. {
  104.     if(root==NULL)
  105.         return 0;
  106.     if((root->left==NULL && root->right!=NULL)||(root->left!=NULL && root->right==NULL))
  107.         return root->data+tonggiatrinode1caycon(root->right)+tonggiatrinode1caycon(root->left);
  108.     return tonggiatrinode1caycon(root->right)+tonggiatrinode1caycon(root->left);
  109. }
  110. void main()
  111. {
  112.     int x;
  113.     int dem=0;
  114.     int dem2=0;
  115.     tree root;
  116.     Init(root);
  117.     CreateTree(root);
  118.     cout<<"Cay theo NLR:";
  119.     TraverseNLR(root);
  120.     cout<<"\nCay theo LNR:";
  121.     TraverseLNR(root);
  122.     cout<<"\nCay theo LRN:";
  123.     TraverseLRN(root);
  124.     //RemoveTree(root);
  125.     int t=demnodeco1caycon(root);
  126.     cout<<"\nCo tat ca "<<t<<" node co 1 cay con";
  127.     cout<<"\nTong gia tri node co 1 cay con la:"<<tonggiatrinode1caycon(root);
  128.     getch();
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement