• 二叉树的宽度


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

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

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

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

    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;
    }

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

  • 相关阅读:
    团队项目-第一阶段冲刺-5
    用户场景分析
    第九周总结
    团队项目-第一阶段冲刺-3
    团队项目-第一阶段冲刺-2
    团队项目-第一阶段冲刺-1
    个人工作任务认领
    实验一:个人博客
    MFC onpaint() ondraw()
    MFC 虚函数与消息映射区别
  • 原文地址:https://www.cnblogs.com/ke-yi-/p/10175873.html
Copyright © 2020-2023  润新知