问答题 二叉树以链接形式(1eft,data,right)存储,给出求二叉树宽度的算法,所谓宽度是二又树的各层上,具有结点数最多的那一层上的结点总数。 【吉林大学2006四(10分)】【华南理工大学2004三、1(10分)】
【正确答案】正确答案:求最大宽度可采用层次遍历的方法,记下各层结点数,取其最大宽度。 Q[rear]=bt; //根结点入队列 while(front<=last) //front,rear初值为1,last同层最右结点在队列中的位置 (p=Q[front++];temp++; //同层元素数加1,temp记当前层宽度 if(p一>ichild!=null) Q[++rear]=p一>Ichild; //左子女入队 if(p一>rchild!=null) Q[++rear]=p一>rchild; //右子女入队 if(front>last) //一层结束 {last=rear; //last指向下层最右元素 if(temp>maxw)maxw=temp; //更新当前最大宽度,maxw记最大宽度 temp=0; //准备下层 }//if }while
【答案解析】