c 前序二叉树遍历解释

标签 c syntax

<分区>

好的,我想知道我在这段代码中所做的以下评论。谢谢,

void visit(tree_t *t){
    printf("%c ", t->e + 'A'); // why t->e + 'A', and not just t->e?
}

void tree_preorder(tree_t *t, void (*visit)(tree_t *)){ // i just don't know the parameter void (*visit)(tree_t *). what exactly is (*visit)(tree_t *)?
    if (!t) return; // what's the condition (!t)?
    visit(t);
    tree_preorder(t->l, visit);
    tree_preorder(t->r, visit);
}

最佳答案

这是三个问题的摘要。

printf("%c ", t->e + 'A'); // why t->e + 'A', and not just t->e?

这是在做一个ascii表的假设。

这会将字符移动 0x41 (65)。因此,如果你有一棵 int 范围为 0 - 25 的树,你可以打印出 A - Z 的有效字符

(*visit)(tree_t *)

这是一个函数指针。会在每个节点上调用

// what's the condition (!t)?

这是一个空检查,以确保您不在树结构中的叶节点。

关于c 前序二叉树遍历解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10419107/

相关文章:

c - 在 C 语言中使用 lapack

c - 从 glib-dbus 迁移到 gdbus

编译器错误导致 execve 失败?

syntax - 如何在VHDL中odt_prehh std_logic_vector?

c - 变量前使用等号或冒号的区别

c - 如何创建静态链接共享库

c - 指向结构的指针的 ANSI C 内存分配抛出非致命运行时错误

带 block 的 Ruby 方法链接 - 令人困惑的不一致语法错误

javascript - node.js/JavaScript 语法 - 向传递的参数添加额外的参数

ruby-on-rails - Ruby 2.3 safe navigation operator '&. and the ' 之间有什么区别试试!来自 ActiveSupport 的方法?