默写层次遍历
========================
所谓默写,就是合上书本,不依靠浏览器、编译器、记事本等外物,仅凭记忆去写下所要求的知识、文字等。本不必如此麻烦,我也不想如此,不过他们太卷了,那就来吧。
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失误,自己现场想的话很容易出错,这样做对记忆力有一定的要求,不过我只会精准记忆核心内容,其他的采用泛式记忆或模糊记忆即可。