Breadth First Traversal With Binary Search Tree C++

binary-search-tree, breadth-first-search, c++

Solution

It will be very hard to get the spacing correctly as a key may have multiple digits and this should affect the spacing for all levels above the given node.

As for how to add `NULL` - simply add else clauses for your ifs where you print a NULL:

if (root) {
  q.push(root);
  cout << root->data << " ";  
} else {
  cout << "NULL ";
}
while (!q.empty()) {
    const node * const temp_node = q.front(); 
    q.pop();

    if (temp_node->left) {
      q.push(temp_node->left);
      cout << temp_node->left->data << " ";
    } else {
      cout << "NULL ";
    }


    if (temp_node->right) {
      q.push(temp_node->right);
      cout << temp_node->right->data << " ";
    } else {
      cout << "NULL ";
    }
}

Problem

Maybe fast/simple Question. I have a a Binary Tree Implemented already, Then I was hoping to convert binary search tree into an array or at least print it out as if in an array. Where I am having trouble with is how to get the NULL/flags in there '\0'. for example lets say I have a tree like: ``` 10 / \ 6 12 / \ \ 1 8 15 \ 4 ``` And I want it to print how its supposed to print. Like: ``` [10,6,12,1,8,\0,15,\0,4,\0,\0,\0,\0,\0,\0] ^Something Like this^ I don't know if I counted the NULL correctly. ``` Or Another Option on how i want to go about showing Visually my Tree is how to get the spacing correctly outputted like with the '/' and '\' pointing to the keys from the parents: ``` 10 / \ 6 12 / \ \ 1 8 15 \ 4 ``` Here is something that I tried elaborating on code wise but im stuck: ``` void BreadthFirstTravseral(struct node* root) { queue<node*> q; if (!root) { return; } for (q.push(root); !q.empty(); q.pop()) { const node * const temp_node = q.front(); cout<<temp_node->data << " "; if (temp_node->left) { q.push(temp_node->left); } if (temp_node->right) { q.push(temp_node->right); } } } ``` Any Kind of Help or Link and or advice and or example code would be very much appreciated.

Original source