Hi abdul,

It help a lot if you can visualize the tree. Here's a sorted tree as an example:

6

/ \

3 8

/ \ \

1 4 9

\

2

Note that all of the sort rules apply. All of the child nodes to the left of the node are smaller, all of the child nodes to the right are larger.

Using your small function, we start at root. Root has a value of 6, and most importantly, a left child. So the function recursively calls itself passing the left child (value 3).

Now the process is repeated with 3 as the current node. 3 has a left child so the function recursively calls itself passing the left child (value 1) and the process repeats again.

The node with a value of 1 does not have a left child. Still, the function calls itself passing the left child (NULL). The function detects the NULL and simply returns. Now the fun starts. :)

Upon returning to the function that is using the node with a value of 1, the function prints the value to output. It then calls inselft passing the right child (value 2).

The node with a value of 2 doesn't have a left child so the call is again trivial as it simply returns. The function then prints the value to output and calls itself with the right child which is also NULL and simply returns to the call that is processing the node with a value of 2.

That call (value 2) returns to the caller (value 1) which returns to its caller (value 3). It then prints 3 to output and processes the right child (value 4).

That process continues until the entire tree is displayed.

Good Luck,

Kent

It help a lot if you can visualize the tree. Here's a sorted tree as an example:

6

/ \

3 8

/ \ \

1 4 9

\

2

Note that all of the sort rules apply. All of the child nodes to the left of the node are smaller, all of the child nodes to the right are larger.

Using your small function, we start at root. Root has a value of 6, and most importantly, a left child. So the function recursively calls itself passing the left child (value 3).

Now the process is repeated with 3 as the current node. 3 has a left child so the function recursively calls itself passing the left child (value 1) and the process repeats again.

The node with a value of 1 does not have a left child. Still, the function calls itself passing the left child (NULL). The function detects the NULL and simply returns. Now the fun starts. :)

Upon returning to the function that is using the node with a value of 1, the function prints the value to output. It then calls inselft passing the right child (value 2).

The node with a value of 2 doesn't have a left child so the call is again trivial as it simply returns. The function then prints the value to output and calls itself with the right child which is also NULL and simply returns to the call that is processing the node with a value of 2.

That call (value 2) returns to the caller (value 1) which returns to its caller (value 3). It then prints 3 to output and processes the right child (value 4).

That process continues until the entire tree is displayed.

Good Luck,

Kent