(一)申请一个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");
}
}
(六)结果图