4-6-Level-order Traversal
来源:互联网 发布:js一个函数执行完成 编辑:程序博客网 时间:2024/06/05 19:25
4-6 Level-order Traversal
Write a routine to list out the nodes of a binary tree in "level-order". List the root, then nodes at depth 1, followed by nodes at depth 2, and so on. You must do this in linear time.
Format of functions:
void Level_order ( Tree T, void (*visit)(Tree ThisNode) );
where void (*visit)(Tree ThisNode)
is a function that handles ThisNode
being visited by Level_order
, and Tree
is defined as the following:
typedef struct TreeNode *Tree;struct TreeNode { ElementType Element; Tree Left; Tree Right;};
Sample program of judge:
#include <stdio.h>#include <stdlib.h>#define MaxTree 10 /* maximum number of nodes in a tree */typedef int ElementType;typedef struct TreeNode *Tree;struct TreeNode { ElementType Element; Tree Left; Tree Right;};Tree BuildTree(); /* details omitted */void PrintNode( Tree NodePtr ){ printf(" %d", NodePtr->Element);}void Level_order ( Tree T, void (*visit)(Tree ThisNode) );int main(){ Tree T = BuildTree(); printf("Level-order:"); Level_order(T, PrintNode); return 0;}/* Your function will be put here */
Sample Output (for the tree shown in the figure):
Level-order: 3 5 6 1 8 10 9
visit 是一个函数指针,它指向 Print 函数的 ILT (Incremental Link Table) 地址,@ILT+0(_order):00401005 jmp order (00401080)@ILT+5(_Print):0040100A jmp Print (00401030)@ILT+10(_main):0040100F jmp main (004010d0)visit 会赋值为 0040100A ,之后程序会jmp 到Print 函数入口执行程序,在order 函数调用完成后,visit的值也将消失。
void Level_order ( Tree T, void (*visit)(Tree ThisNode) ){Tree Q[MaxTree];int front, rear, i;front = 0;rear = 0;i = 0;Q[front] = T;if(!T)return;while(i <= rear){ /* 当T只有一个节点时, rear==front==0, i==1, i>rear ; 当root只有一子时,第一次后, i==rear==1 */if(Q[i]->Left)Q[++rear] = Q[i]->Left;if(Q[i]->Right)Q[++rear] = Q[i]->Right;i++;}for(i=front; i<=rear; i++)(*visit)(Q[i]);}
1 0
- 4-6-Level-order Traversal
- 5.1.4 Binary Tree Level Order Traversal
- level- order traversal
- C++ Level-Order Traversal
- [leetcode] Level Order Traversal
- Level Order Tree Traversal
- BFS (Level Order Traversal)
- BFS (Level Order Traversal)
- BFS (Level Order Traversal)
- Level-order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- java 遍历arrayList的四种方法
- Android-自动轮播的ViewPager+滑动指示器
- mptcp-patch - download
- 使用WKWebView的一个问题:iOS中使用本地html的一个大坑
- android 使用viewpager实现广告轮播效果
- 4-6-Level-order Traversal
- extends Thread 与 implements Runnable 的区别
- 设计师应该关注的科技发展方向(五)
- redis + Tomcat 8 的session共享解决
- 微信HTML5小游戏之推箱子
- 使用FreeMarker生成静态HTML
- Maven POM 优化 - Scope
- 多屏互动——H5中级进阶
- String类