I’ve been learning how to program Binary Tree Search using Linked Lists in C++. Everything works fine and I understand how the Binary Tree works however I would like to be able to print the tree with the head on top and all the nodes following bellow as I try to demonstrate here:
[root or head]
[left] [right]
[left] [right] [left] [right]
I am using the Console to print the tree, therefore feel free to use ‘cout’ or ‘printf’. I believe I need to set the width of the console but I’m not sure how to start.
Thanks, Y_Y
As sbi mentioned, making a left-aligned version is easier than a center-aligned one. But whichever alignment you choose your fundamental algorithmic approach should be:
Traverse the tree breadth-first. Do this by using a queue with the following algorithm:
that is one less than a power of 2th time (starting from 1), also
print a newline.
(See http://www.cs.bu.edu/teaching/c/tree/breadth-first/ )
In order to print a center-aligned tree, also do the following (only works if the tree is complete. If it’s not complete, the easiest thing to do is make a complete copy where every place that should have a node gets some kind of a null node):
“print” each line into a string in
an array of strings.
in characters of the longest element
you print. Let’s call this
maxElemLen.
one tab character before it and one
tab character after it.
every line in the array, replace
each tab character with 2^(nLines –
lineNum) tab characters.
after a tab or newline to
maxElemLen+1 spaces, and expand each
tab that comes after anything else
(i.e., after a printed elem) to (maxElemLen + 1 – (the
number of characters elapsed since
the last tab)) spaces.
array, in order.