Beispiel #1
0
int hight(struct node* root)
{
    if(root==NULL)
        return 0;
    else
    {
        int l=hight(root->left);
        int r=hight(root->right);
         return l>r?(l+1):(r+1);
    }
}
Beispiel #2
0
int hight(TREE T)
{
 
	h++;
	if(maxh<h) maxh=h;
	if(T){				 
			 hight(T->left);
			 hight(T->right);
	}   
	h--;
	return maxh-1;
}
Beispiel #3
0
int binatTreeMain(){
	TREE T;
	int choice;
	char c='y';
	printf("请输入带空二叉树先序遍历序列(0表示空节点),例如3个元素的二叉树输入为\n");
    printf(" 1 2 0 0 3 0 0 (1为根结点):");
	creattree(&T);
	while(c=='Y'||c=='y'){
	choice=menu();
	switch(choice){
	case 11:printf("递归法前序遍历:");pretraverse1(T);break;
	case 12:printf("非递归法前序遍历:");pretraverse2(T);break;
	case 21:printf("递归法中序遍历:");intraverse1(T);break;
	case 22:printf("非递归法中序遍历:");intraverse2(T);break;
	case 3:printf("递归法后序遍历:");posttraverse1(T);break;	
	case 41:outdegree1(T);
			printf("出度为0的节点数目:%d\n",n0);
	        printf("出度为1的节点数目:%d\n",n1);
	        printf("出度为2的节点数目:%d\n",n2);break;
	case 42:outdegree2(T);break;	
	case 5:floortraverse(T);break;
	case 6:printf("\n此二叉树高度为:%d",hight(T));break;
	case 7:exchange(&T);intraverse1(T);break;
	}
    printf("\n是否继续?(Y/N):");
	fflush(stdin);
	scanf("%c",&c);
	system("cls");
	}
}
Beispiel #4
0
int maxwidth(struct node *root)
{
    if(root)
    {
        int h=hight(root);
        int *con=(int *)calloc(sizeof(int),h);
        int level=0;
        getwidth(root,con,level);
      return ma(con,h);
    }
}