如何显示二叉树
最近想练习下二叉树的代码,发现大部分练习都是在纸上画个二叉树,然后再写什么先序、中序、后序,最后将运行结果对比纸上的二叉树检验,可你怎么知道你创建的二叉树就是正确的呢?因此就费了点功夫写了个二叉树显示代码,虽然能完成显示功能,但我觉得算法稍嫌啰嗦,应该有更简洁的写法,特提出供各位集思广益,我的不含二叉树显示的练习代码如下(同时提供一个4层满树和一个6层随机树显示效果):程序代码:
#include <stdio.h> #include <stdlib.h> #include <time.h> char cnum; typedef struct node { char c; node *lc,*rc; }tree,*list; list creat(list root,int lv) { if(lv<2||(rand()%6<6&&lv<4)) //创建4层满树 //if(lv<2||(rand()%6<4&&lv<6)) //创建6层随机树 { root=(list)malloc(sizeof(tree)); root->lc=root->rc=NULL; root->c=cnum++; } else return NULL; root->lc=creat(root->lc,lv+1); root->rc=creat(root->rc,lv+1); return root; } void listtree(list root) {//显示树 //各位高手可在此大显神通,填充可显示二叉树的代码 } void main() { list root=NULL; srand((unsigned int)time(NULL)); cnum='A'; root=creat(root,0); listtree(root); }