zoukankan      html  css  js  c++  java
  • 二叉树的宽度

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

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

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

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

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

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

  • 相关阅读:
    15-数组concat()方法和push比较
    06-使用云储存上传工具
    05-云函数/云数据库的增删改查
    错题1
    c++链表
    8817
    8816
    1177
    1355
    c++期末考
  • 原文地址:https://www.cnblogs.com/ke-yi-/p/10175873.html
Copyright © 2011-2022 走看看