C语言 | 二叉树打印效果,控制台打印

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:");
    }
}
相关推荐
Patrick在香港12 分钟前
Python 拉取 C&SD 官方 API:香港 2022 年已跨过“超老龄线“,而抚养比正在爬回 1961
android·c语言·python·数据分析·时序数据库·数据可视化·香港
彷徨而立2 小时前
【C/C++】多线程读写普通 int 变量的一些问题(二)
c语言·c++
luj_17682 小时前
毒素驱动的生物自毁机制探析
服务器·c语言·开发语言·经验分享·算法
Brilliantwxx2 天前
【C语言】 初入嵌入式C语言复习(基础+进阶面试题)
c语言·开发语言
wuminyu2 天前
深入剖析 Panama Off-heap 的性能损耗与开销
java·linux·c语言·jvm·c++
rhythm-ring2 天前
宏定义续行符 \ 的使用与踩坑
c语言·c++
老当益壮梁奶奶2 天前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
「QT(C++)开发工程师」2 天前
C++11 std::unique_ptr — 独占所有权的智能指针
c语言·开发语言·c++·qt
不正经学生2 天前
C语言动态内存管理(上):堆上的自由与责任
c语言·开发语言·c++·算法·面试
布莱克6052 天前
队列详解:定义、分类、应用场景及与栈的区别(C/C++ 代码讲解)
c语言·开发语言·c++·队列