默写层次遍历


默写层次遍历

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

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

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失误,自己现场想的话很容易出错,这样做对记忆力有一定的要求,不过我只会精准记忆核心内容,其他的采用泛式记忆或模糊记忆即可。


文章作者: 张赛东
文章链接: https://zsd.name
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 张赛东 !
评论
  目录