思想:假设二叉树采用二叉链存储结构,采用层次遍历的方法求出所有节点的层次,并将所有节点和对应的层次放在一个队列中。然后通过扫描队列求出各层的节点总数,最大的层节点总数即为二叉树的宽度。对应的算法如下:
int BTWidth(BTNode *b)
{
struct
{
BTNode *data[MaxSize];//保存队列的节点指针
int level[MaxSize];//保存data中相同下标节点的层次
int front,rear;
} Qu;//非循环队列
BTNode *p;
int k,max,i,n;