树形结构的调试打印
29 Nov 2019乱逛看到的帖子, 给出了一种打印树形结构的套路, 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 对象,获取最近记录的节点指针;
}
}
}