1. 打印效果
# 1.demo1
a
/ \
b c
/ \ / \
d e f /
输入: a b d / / e / / c f / / /
打印效果:
a
├──L:b
│ ├──L:d
│ └──R:e
└──R:c
│ ├──L:f
# 2.demo2
a
/ \
b c
/ \ / \
d e f /
g h /\ /i
输入: a b d g / / h / / e / / c f / i / / /
打印效果:相当于拿着左下角掂起来,沾到右上角墙上,其余自然下垂后,恢复原二叉树效果。
a
├──L:b
│ ├──L:d
│ │ ├──L:g
│ │ └──R:h
│ └──R:e
└──R:c
│ ├──L:f
│ │ └──R:i
2. 打印函数
//打印二叉树
void printTree(BtNode* root, int depth, char* prefix) {
if (root == NULL) return;
// 打印当前节点前的基础缩进
for (int i = 1; i < depth; i++) {
//printf("%s", (i == depth-1) ? "│ " : " ");
printf("%s", "│ ");
}
// 打印当前节点的值
printf("%s%c\n", prefix, root->data);
// 递归打印子节点
if (root->lchild || root->rchild) {
printTree(root->lchild, depth + 1, "├──L:");
printTree(root->rchild, depth + 1, "└──R:");
}
}