二叉树的宽度

二叉树的宽度就是每一层的宽度的最大值

要求二叉树的宽度,不许先求出每一层的宽度,求每一层的宽度必须知道每一层的元素

作为初学的我,看到树本来就是从括号表示来的,所以我在这里借助里开始时候的树的括号表示的字符串,对每一个元素都在字符串中查找并进进行括号匹配返回留下有括号的个数就是树的节点的层次。

其实,我的最外面的一层循环就是层次查找,所以每一次都是将同一层的元素放在一块。

int WidthBT(BTNode *b,char str[])
{
	BTNode *St[MaxSize],*p;
	int front,rear,tier,tier1=0;
	int s=1,max=0;
	char ch;
	front=rear=-1;
	if(b!=NULL)
	{
		rear++;
		St[rear]=b;
		while(front!=rear)
		{
			p=St[front];
			ch=str[0];
			int j=0;
			char ch1[MaxSize];
			int top=-1;
			front=(front+1)%MaxSize;
			tier=0;
			while(str[j]!=p->date)
			{
				if(str[j]=='(')
					ch1[++top]='(';
				else if(str[j]==')')
					top--;
				j++;
			}
			tier=top+1;
			if(tier1==tier)
				s++;
			else
			{
				max=s>max?s:max;
				s=1;
			}
			tier1=tier;
			if(p->lchild!=NULL)
			{
				rear=(rear+1)%MaxSize;
				St[rear]=p->lchild;
			}
			if(p->rchild!=NULL)
			{
				rear=(rear+1)%MaxSize;
				St[rear]=p->rchild;
			}
		}
	}
	return max;
}

初学数据结构,不太懂,希望看到的大神能够多多指教。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值