Debugging tree code is easy. This is because a tree is not a linear structure. As such, it is difficult to “see” the structure of a
tree with built-in debugger capabilities.
1static int level = 0;
2static char LR[300];
3static void __enter(
struct Tree
*pTree)
4{ 5 LR[level++] = ’L’;
6 7} 8 9static void __printNode(
struct Tree
*pTree)
10{ 11 int i;
12 13 for (i = 1; i
< level; ++i)
14 { 15 if (i == level
−1)
16 printf(”_______+”);
17 else if ((LR[i
−1] == LR[i]))
18 printf(”________”);
19 else 20 printf(”_______
|”);
21 } 22 printf(”(%5d)”,Tree_getrootvalue(pTree));
23 if (!Tree_isempty(Tree_getlefttree(pTree))
|| 24 !Tree_isempty(Tree_getlefttree(pTree)))
25 { 26 printf(”+
∖n”);
27 } 28 else 29 { 30 printf(”
∖n”);
31 } 32 LR[level
−1] = ’R’;
33} 34 35static void __leave(
struct Tree
*pTree)
36{ 37 −−level;
38} 39 40{ 41 struct Tree
*pTree;
42 43 pTree = Tree_new();
44 // code to read content into the tree 45 46 Tree_traverse(pTree, __enter, __printNode, __leave);
47}