树形结构的调试打印

树形结构的调试打印

乱逛看到的帖子, 给出了一种打印树形结构的套路, Linux 有个 tree 命令用来打印树状目录列表, 可以看到某个目录下的所有文件和子目录, 非常直观, 下面代码的目的就是为了实现这个效果.

伪代码:

/* log 对象 */
typedef struct node_backlog {
    node 指针;
    回溯点位置(索引);
};

/* Dump */
void dump(tree) {
    从根节点开始迭代;
    初始化 log 堆栈;
    for (; ;) {
        if (节点指针为空) {
             log 对象中获取回溯点位置;
            if (不存在,或无效的回溯点) {
                压栈空节点指针;
            } else {
                压栈当前节点指针,同时记录下一个回溯点位置;
            }
            if (回溯点位置索引为 0) {
                输出层次缩进、画路径,打印节点内容;
            }
            进入下一层;
        } else {
            if (log 堆栈为空) return;
            弹出 log 对象,获取最近记录的节点指针;
        }
    }
}