默写层次遍历

默写层次遍历

========================

所谓默写,就是合上书本,不依靠浏览器、编译器、记事本等外物,仅凭记忆去写下所要求的知识、文字等。本不必如此麻烦,我也不想如此,不过他们太卷了,那就来吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void level(BTNode *p) {// BTNode为二叉树结点
int front,rear;
BTNode *que[maxSize]; //maxSize为事先定义的循环队列上限;定义循环队列,记录将要访问的层次上的结点
front=rear=0;
BTNode *q;
if(p!=NULL) {
rear = (rear + 1) % maxSize;
que[rear] = p; //头结点入队
while(front!=rear) {
front = (front + 1) % maxSize;
q = que[front]; //头结点出队
Visit(q);//Visit()函数为事先定义的访问二叉树结点的函数,举例:cout<<q->data;
if(q->lchild != NULL) { //结点左子树不为空
rear = (rear + 1) % maxSize;
que[rear] = q->lchild; //左子树根节点入队
}
if(q->rchild != NULL) {//结点右子树不为空
rear = (rear + 1) % maxSize;
que[rear] = q->rchild; //右子树根节点入队
}
}
}
}

默写结果

完全正确

总结

层次遍历属于核心且简单的内容,将程序整个记下来,也是为了0失误,自己现场想的话很容易出错,这样做对记忆力有一定的要求,不过我只会精准记忆核心内容,其他的采用泛式记忆或模糊记忆即可。