二叉树的层序遍历
迭代的原理
一边存储,一边遍历,存储的新的节点加到数组的尾部,遍历的时候从数组的头部开始遍历。
代码如下:
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++;//注意,必须在一个节点的数据输出完,左右子树也存储完,才把指针后移,
//进行下一个数组元素的判断
}
}