Source: Arpanmondal Blog{code class="brush: cpp"} typedef struct node { int data; struct node *left, *right; } node; // print right-wall in forward i.e. root to leaf void print_right_wall( node *root) { if(root) { if(root->left || root->right) { cout << root->data << " "; } if(root->right) print_right_wall(root->right); else print_right_wall(root->left); } } // print leaf nodes right to left void print_leaves( node *root) { if(root) { if(root->left == NULL && root->right == NULL) { cout << root->data << " "; } print_leaves(root->right); print_leaves(root->left); } } // print left-wall in backward i.e. leaf to root void print_left_wall( node *root) { if(root) { if(root->left) print_left_wall(root->left); else print_left_wall(root->right); if(root->left || root->right) { cout << root->data << " "; } } } // clockwise boundary traversal void boundary_traversal(node *root) { // print right-wall in forward i.e. root to leaf print_right_wall(root); // print leaf nodes right to left print_leaves(root); // print left-wall in backward i.e. root to leaf print_left_wall(root); } /** * N.B. For anti-clockwise boundary traversal, modify the code as: * 1. print left-wall in forward i.e. root to leaf * 2. print leaf nodes left to right * 3. print right-wall in backward i.e. leaf to root **/ {/code}
Read full article »
Followers on Owler
1