Files
Data-Structure/Dev-C++/ExerciseBook/06.67/CSTree.cpp
2020-01-15 02:40:28 +08:00

68 lines
1022 B
C++

/*===================================
* 树的二叉链表(孩子-兄弟)结构存储表示
====================================*/
#include "CSTree.h"
/*
* 初始化
*
* 构造空树。
*/
Status InitTree(CSTree* T) {
if(T == NULL) {
return ERROR;
}
*T = NULL;
return OK;
}
/*
* 判空
*
* 判断树是否为空树。
*/
Status TreeEmpty(CSTree T) {
return T == NULL ? TRUE : FALSE;
}
// 以图形化形式输出当前结构
void PrintTree(CSTree T) {
// 遇到空树则无需继续计算
if(TreeEmpty(T)) {
printf("\n");
return;
}
Print(T, 0);
printf("\n");
}
// 图形化输出当前结构内部实现
static void Print(CSTree T, int row) {
int k;
if(T == NULL) {
return;
}
// 访问当前结点
printf("%c ", T->data);
Print(T->firstchild, row + 1);
if(T->nextsibling != NULL) {
printf("\n");
for(k = 0; k < row; k++) {
printf(". ");
}
Print(T->nextsibling, row);
}
}