Advertisement
Abe_Matt

WORKS

Dec 6th, 2013
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.59 KB | None | 0 0
  1. #include <string>
  2. #include <fstream>
  3. #include <iostream>
  4. #include <deque>
  5. #include <iomanip>
  6. #include <queue>          // std::queue
  7. #include <iostream>
  8. #include <fstream>
  9. #include <string>
  10. #include <sstream>
  11. #include <vector>
  12. #include "BinaryTree.h"
  13.  
  14.  
  15. ;using namespace std;
  16.  
  17. //BinaryTree::BinaryTree(){ //Конструктор
  18.  
  19. //}
  20.  
  21.  
  22. void BinaryTree::printLevelOrder(BinaryTree *root) {
  23.   if (!root) return;
  24.   queue<BinaryTree*> nodesQueue;
  25.   int nodesInCurrentLevel = 1;
  26.   int nodesInNextLevel = 0;
  27.   nodesQueue.push(root);
  28.   while (!nodesQueue.empty()) {
  29.     BinaryTree *currNode = nodesQueue.front();
  30.     nodesQueue.pop();
  31.     nodesInCurrentLevel--;
  32.     if (currNode) {
  33.       cout << currNode->data << " ";
  34.       nodesQueue.push(currNode->left);
  35.       nodesQueue.push(currNode->right);
  36.       nodesInNextLevel += 2;
  37.     }
  38.     if (nodesInCurrentLevel == 0) {
  39.       cout << endl;
  40.       nodesInCurrentLevel = nodesInNextLevel;
  41.       nodesInNextLevel = 0;
  42.     }
  43.   }
  44. }
  45.  
  46.  
  47.  
  48. void BinaryTree::add_node(BinaryTree *tree, vector<int> str1,BinaryTree *child){
  49.         int marker=0;
  50.         char position=' ';
  51.  
  52.                
  53.         for(int i=0;i<str1.size();i++){
  54.                
  55.                  if(tree->data==str1[i]){
  56.                                 i++;
  57.                                 int j=i;      
  58.                                
  59.                                
  60.                                 if((tree->left!=NULL)||(tree->right!=NULL)){
  61.                                     if ((tree->right->data!=NULL)){ if(str1[j]==tree->right->data){ child=tree->right; position='r';marker=1; }}
  62.                                     else if((tree->left->data!=NULL)){if(str1[j]==tree->left->data){child=tree->left; position='l';marker=1;}}
  63.                                
  64.                                 }
  65.                                
  66.                  }
  67.                                
  68.                                
  69.                 // if ((tree->right!=NULL)||(tree->left!=NULL)){
  70.                 //   if(tree->right!=NULL){if(tree->right->data==str1[i]){child=tree->right; position='r';}}
  71.                 //   else{if(tree->left!=NULL){if(tree->left->data==str1[i]){child=tree->left; position='l';}}}
  72.                 // }    //else{
  73.                 // if(marker==0){
  74.                 //CODE WRITTEN AT RANDOM
  75.            
  76.                  if((tree->right==NULL)||(tree->left==NULL)){
  77.                      if (tree->right==NULL){child=tree->right; position='r';}
  78.                      else if ((tree->left==NULL)){ child=tree->left; position='l';}
  79.                 }   else {
  80.                 }
  81.                    
  82.                            
  83.                     //if(tree->right!=NULL){if(tree->right->data==str1[i]){child=tree->right; position='r';i++;}else{child=tree->left; position='l';}}
  84.                     //else{if(tree->left->data==str1[i]){child=tree->left; position='l';i++;}else{child=tree->right; position='r';}}
  85.                  
  86.                        //BinaryTree *parent= new BinaryTree;
  87.                        if(child==NULL){
  88.                                         BinaryTree *child= new BinaryTree;
  89.                                         child->data=str1[i];
  90.                                         child->left=NULL;
  91.                                         child->right=NULL;
  92.                                                 if((position=='l')||(position=='r')){
  93.                                                       if(position=='l') tree->left=child;
  94.                                                       else tree->right=child;
  95.                                          }
  96.                                                                 //tree->right= new BinaryTree;
  97.                                                                 //tree->left= new BinaryTree;
  98.                                 cout<<endl;
  99.                                 cout<<child->data<<endl;
  100.                                 tree=child;
  101.                                 }else{
  102.                                 //  tree=child;
  103.                    
  104.                                 }
  105.                                //}// else pervyi if
  106.           }      
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement