二叉树的树形结构打印
打印树形结构初衷 树形结构是算法里很常见的一种数据结构,从二叉树到多叉树,还有很多变种。每当需要程序员自己手动实现树形结构时,因为结构本身的复杂性,不容易调试验证。但一般的调试对树形数据结构的整体把控十分有限,甚至会让人迷失在一大堆的调试信息海洋里。如果能够将数据树形打印出来,那么我们理解树形结构的算法就事半功倍。 树形打印方式 我们知道 Linux 有个 tree 命令用来打印树状目录列表,可以将某个目录下的所有文件和子目录一览无遗,非常直观,本文可以说就是为了实现这个效果,并给出源码实现。 树形打印可分为深度优先和广度优先两种。虽然广度优先更加直观,但基于我们的屏幕宽度不够,难以容纳整棵树,所以采用深度优先的方式。并且先打印右子树再打印左子树,测着头观察数据更加直观,哈哈! #ifndef _AVLTREE_H #define _AVLTREE_H #include <iostream> template<typename T> class avlnode { public: T val; avlnode* left; avlnode* right; avlnode(T x) :val(x), left(nullptr), right(nullptr) {} }; template<typename T> class avltree { typedef avlnode<T>