二叉树按层遍历输出——双指针法(图解)

来源:互联网 发布:爱奇艺获取网站源码 编辑:程序博客网 时间:2024/05/17 23:49

(一)申请一个vector的容器vt。
(二)设置两个指针(当然,不是必须是指针形式的指针,可以用数组的下标代替,只是采用指针这个思想),这两个指针一个指向当前访问的节点——cur(标志目前访问的是哪个节点),另外一个指向当前层访问节点的最后一个节点——end(标志当前层访问结束)。
(三)对两个指针的初始化:首先在根节点不为NULL的情况下,将根节点装入容器,然后cur从0开始,end等于容器的长度(即end=1)。

这里写图片描述

(四)过程进行时

这里写图片描述

(五)代码

void print_tree(tree *root){    vector<tree*> vt;    int cur = 0, end = 0;    vt.push_back(root);    while (cur<vt.size())    {        end = vt.size();        while(cur<end)        {            printf("%c ", vt[cur]->date);//输出根节点的值            if (vt[cur]->lchild)                vt.push_back(vt[cur]->lchild);//将左孩子加入,以便下一次循环访问            if (vt[cur]->rchild)                vt.push_back(vt[cur]->rchild);//将右孩子加入,以便下一次循环访问            cur++;        }        printf("\n");    }}

(六)结果图

这里写图片描述

原创粉丝点击