您的位置:首页 > 其它

求一棵二叉树的宽度

2015-08-01 13:46 232 查看
二叉树的宽度是指具有节点数最多的那一层的结点个数,我们的算法利用层次遍历求出一棵二叉树的宽度,思路在于每次遍历一个节点时递增count,当结束对某一层的遍历后就将该count值与max值相对比,保存较大值。以下就是代码:

/**
* 求出一棵二叉树的宽度
*/
public int getWidth(Node node){
Node qu[]=new Node[255];
int head=0;
int tail=0;
int point=0; //用来指向每一层的最后一个节点
int count=0; //用来计算每一层节点的数目,换层时清0
int max=0; //用来保存节点最多那一层的节点
Node p=node;
if(p!=null){
qu[tail++]=p;
count=0;
point=tail;
max=0;
while(head!=tail){
p=qu[head++];
count++;
if(p.getLeft()!=null){
qu[tail++]=p.left;
}
if(p.getRight()!=null){
qu[tail++]=p.right;
}
if(head==point){
point=tail;
if(count>max)
max=count;
count=0;
}

}
}

return max;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: