下面是具体的关于二叉树各接口代码的简单测试应用,如下:
[cpp]
/* main */
int main(int argc, char **argv)
{
int ret;
int *int_ptr;
BiTree tree1, tree2, tree_merge;
List list;
ListElmt *member;
BiTreeNode *nd;
/* tree1 as follows :
1
/ \
2 5
/ \ / \
3 4 6 7
*/
create_tree(&tree1, NULL); //input "123#4#56#7#"
printf("\nstep1:tree1 build success\n");
/* tree2 as follows:
0
/ \
8 9
/ \ /
6 7 3
*/
int_ptr = NULL;
create_tree(&tree2, NULL); //input "086#7#93###"
printf("step2:tree2 build success\n");
int_ptr = (int *)malloc(sizeof(int));
if( int_ptr == NULL )
return -1;
*int_ptr = 11;
/* after merged as follow( by tree1 and tree2 ) :
11
/ \
1 0
/ \ / \
2 5 8 9
/ \ / \ / \ / \
3 4 6 9 6 7 3 NULL
*/
ret = bitree_merge(&tree_merge, &tree1, &tree2, int_ptr);
printf("step3: after merged: there are %d number nodes in the tree_merge.\n", bitree_size(&tree_merge));
/* after remove the right tree:
11
/ \
1 NULL
/ \
2 5
/ \ / \
3 4 6 7
*/
printf("\nstep4: remove the right tree in tree_merge.\n");
bitree_rem_right(&tree_merge, bitree_root(&tree_merge) );
printf("after remove the right tree, there are %d number nodes in the tree_merge.\n", bitree_size(&tree_merge));
printf("\nstep5: preorder traverse the tree and insert the nodes into the list\n");
list_init(&list, destroy);
ret = preorder( bitree_root(&tree_merge), &list );
printf("according to the sequence of the preorder traversing the tree:\n");
for(member = list_head(&list); member != NULL; member = list_next(member) )
{
printf("%d ", *(int *)list_data(member));
}
printf("\n");
printf("\nsetp6: inorder traverse the tree and insert the nodes into the list\n");
list_init(&list, destroy);
ret = inorder( bitree_root(&tree_merge), &list );
printf("according to the sequence of the inorder traversing the tree:\n");
for(member = list_head(&list); member != NULL; member = list_next(member) )
{
printf("%d ", *(int *)list_data(member));
}
printf("\n");
printf("\nsetp7: postorder traverse the tree and insert the nodes into the list\n");
list_init(&list, destroy);
ret = postorder( bitree_root(&tree_merge), &list );
printf("according to the sequence of the postorder traversing the tree:\n");
for(member = list_head(&list); member != NULL; member = list_next(member) )
{
printf("%d ", *(int *)list_data(member));
}
printf("\n");
printf("\nstep8: delete all the nodes in the tree.\n");
bitree_rem_left( &tree_merge, NULL );
printf("there are %d number nodes.\n", bitree_size(&tree_merge) );
bitree_destroy(&tree_merge);
return 0;
}
具体的含义不再说明,注释以及printf已经非常详细。代码的编译过程如下:

程序执行过程如下: