点击图片,立即加入开源中国码云
这是一篇讲究套路的数据结构实战教学文,阅读需要约20分钟。
讲究套路之前,先来回答三个问题。
为什么要打印树形结构
树形结构是算法里很常见的一种数据结构,从二叉树到多叉树,还有很多变种。很多涉及到算法的工作,就需要程序员自己手动实现树形结构,但出于结构本身复杂性,不太容易做对,需要一种调试工具来检测正确性。一般的调试手段无非就是加打印,GDB上断点,写测试用例等,但这些局部以及外部的调试信息对于数据结构的整体把握提供的帮助十分有限,经验不足的程序员甚至可能会迷失在一大片调试信息的汪洋大海中找不着北。理解算法本身是一回事,自己动手是另一回事了,这跟我们理解算法的思维方式有关——对于数据结构而言,我们的感知是形象化的,比方脑海中自动出现一幅图,动态的插入删除,每个节点是如何变动的,平衡的时候局部是怎么旋转的等等,对智力正常的人来说不是什么难事。但对机器来说,它要面对的是只是一堆基于状态的指令而已,将人的形象思维转化为状态机,本身是一件艰难的工作,因为我们很难感知并存储这么多状态,这就需要工具来辅助,最好是画出整个形状结构,以直观地提醒我们哪里出错了,所谓“观其形,见其义”。