5.5.4 Debugging tree code

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.

Listing 2 illustrates how to print a tree in text.


Listing 2:printtree
 
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 == level1) 
16      printf(”_______+”); 
17    else if ((LR[i1] == 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[level1] = ’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}