Solved

# Is is possible to convert the following code without using recursive way??

Posted on 2006-06-10
244 Views
void level_order_aux ( node *tree, int level )
{
if ( tree == 0 )
return;

if ( level == 0 )
printf ( "%d ", tree->data );
else if ( level > 0 ) {
puts ( "Recurse left" );
level_order_aux ( tree->left, level - 1 );
puts ( "Recurse right" );
level_order_aux ( tree->right, level - 1 );
}
}

void level_order ( node *tree )
{
for ( int d = 0; d <= height ( tree ); d++ )
level_order_aux ( tree, d );
}
0
Question by:shingo43
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
1 Comment

LVL 22

Accepted Solution

grg99 earned 125 total points
ID: 16879298
Sure, but you'd need an auxiliary array to remember where you've been, so you can back up.  SOmething very rougly like:

node * save [ MaxLevels ];

p = 0;

Save[ p ] = tree;  // save our place
while( tree->left != NULL ) {
Save[ p++ ] = tree;  // save our place
printf( "%d",  tree->data );
tree = tree->left;
}

for( --p; p >= 0; p--) {  // now backtrack
tree = Save[ -- p ];
while( tree->right != NULL ) {
printf( "%d",  tree->data );
tree = tree->right;
}
}
--- make that VERY roughly!

The basic idea is to instead of recursing, make an entry in the save array.  Then backup thru the info.

0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Written by John Humphreys C++ Threading and the POSIX Library This article will cover the basic information that you need to know in order to make use of the POSIX threading library available for C and C++ on UNIX and most Linux systems.   [s…
This article shows you how to optimize memory allocations in C++ using placement new. Applicable especially to usecases dealing with creation of large number of objects. A brief on problem: Lets take example problem for simplicity: - I have a G…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
###### Suggested Courses
Course of the Month2 days, 3 hours left to enroll