Advertisement
Guest User

Untitled

a guest
Feb 14th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.97 KB | None | 0 0
  1. //
  2. // tau's MS interview
  3.  
  4. // traverse tree level by level
  5.  
  6. struct Node {
  7.  
  8.     Node(int d)
  9.         : data(d)
  10.         , left(nullptr)
  11.         , right(nullptr)
  12.     { }
  13.  
  14.     Node* left;
  15.     Node* right;
  16.     int data;
  17.  
  18.     void print() {
  19.         std::cout << data << std::endl;
  20.     }
  21. };
  22.  
  23. void traverse_bfs(Node* root)
  24. {
  25.     Queue myq;
  26.  
  27.     if (root == nullptr) {
  28.         return;
  29.     }
  30.  
  31.     myq.enqueue(root);
  32.  
  33.     while (!myq.empty()) {
  34.         unsigned itemsAtThisLevel = myq.size();
  35.  
  36.         while ((itemsAtThisLevel--) > 0) {
  37.             Node* m_last = deque();
  38.             m_last->print();
  39.  
  40.             // next level items
  41.             if (m_last->left)
  42.                 myq.enqueue(m_last->left);
  43.  
  44.             if (m_last->right)
  45.                 myq.enqueue(m_last->right);
  46.  
  47.         } // go to next sibling at the same level
  48.     }
  49. }
  50.  
  51. Node* createTree(std::const_forward_iterator begin, std::const_forward_iterator end)
  52. {
  53.     Node* root = nullptr;
  54.     while (begin != end) {
  55.  
  56.     }
  57. }
  58.  
  59. int main ()
  60. {
  61.     Node* root = createTree(std::vector<int>({12, 23, 56, 90}));
  62.  
  63.     traverse_bfs(root);
  64.  
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement