二叉树的层序遍历

迭代的原理

一边存储,一边遍历,存储的新的节点加到数组的尾部,遍历的时候从数组的头部开始遍历。

代码如下:


void LevelorderTraversal( BinTree BT )//层序遍历
{
    if(BT==NULL) return;//判断是否为空应该大写NULL
    BinTree node[100];
    node[0]=BT;
    int head=0,last=1;//last相当于尾指针,指向的是数组最后一个元素的下一个位置
    while(head<last){//当head=last的时候跳出循环,此时head指向数组最后一个元素的下一个
    //位置,也就是说存进来的节点已经全部输出完了
    	printf(" %c",node[head]->Data);//此处输出格式应该是字符类型,所以应该是%c,
        //而不是%d
    	if(node[head]->Left) {
        	node[last]=node[head]->Left;
        	last++;
        }
        if(node[head]->Right){
        	node[last]=node[head]->Right;
            last++;
        }
        head++;//注意,必须在一个节点的数据输出完,左右子树也存储完,才把指针后移,
        //进行下一个数组元素的判断
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 12:05
点赞 评论 收藏
分享
06-10 23:36
已编辑
首都经济贸易大学 C++
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 16:15
我应届生,去年10月份开始在这家公司实习,到今年10月份正好一年想(实习+试用期),在想要不要提前9月份就离职,这样好找工作些,但又差一个月满一年,又怕10月份国庆回来离职,容易错过了下半年的金九银十,到年底容易gap到年后
小破站_程序员YT:说这家公司不好吧,你干了快一年 说这家公司好吧,你刚毕业就想跑路说你不懂行情吧,你怕错过金九银十说 你懂行情吧,校招阶段在实习,毕业社招想换工作 哥们,我该怎么劝你留下来呢
应届生,你找到工作了吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务