6-6-Level-order Traversal-函数题
解题代码
void Level_order(Tree T, void(*visit)(Tree ThisNode)) {
Tree* queue = (Tree)malloc(10 * sizeof(struct TreeNode));
int front = -1, rear = -1;
queue[++rear] = T;
while (queue[front + 1]) {
if (queue[front + 1]->Left) queue[++rear] = queue[front + 1]->Left;
if (queue[front + 1]->Right) queue[++rear] = queue[front + 1]->Right;
(*visit)(queue[++front]);
}
}
测试结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/af13ac1edbae6c4d883ce401995732d3.png)
问题整理
1.void(*visit)(Tree ThisNode)第一次遇见.
2.,(*visit)表示函数指针,void说明该函数无返回值,(Tree ThisNode)表示该函数的参数表,ThisNode在我看来没啥用
3.之所以这样引用,我个人观点在于活化了函数与被引用的一类函数的关系。使得接口更具包容性。