最近在学习平衡二叉树,需要一种可以直观体现树结构的打印方式来加深对平衡二叉树的理解,以及判断自己写的平衡二叉树的正确性。在没有查阅资料的情况下我写了一种通过递归实现的短小代码。因为我个人认为,作为用于判断的工具,简洁是很重要的,它还能保证作为裁判的正确性(因为代码越长越容易出错)。我查阅资料后没有发现有相似的写法,在此把我的方法分享给大家。如果发现有什么问题可以交流讨论哦!
//树节点定义
typedef struct TNode Node;
typedef Node* BinTree;
struct TNode {
int Data;
BinTree Left;
BinTree Right;
};
//为了结构美观,数据选取不大于两位数。
//树结构打印主程序
void
printLevelTools (BinTree AVL,int level) {
int i;
if (!AVL) {
for (i = 0; i < level; i += 1) {
printf(" ");
}
printf("NL\n");
return;
}
printLevelTools(AVL->Right,level+1);
for (i = 0; i < level; i += 1) {
printf(" ");
}
printf("%02d\n",AVL->Data);
printLevelTools(AVL->Left,level+1);
}
//树结构打印驱动程序
void
printLevel (BinTree AVL) {
printLevelTools(AVL,0);
}