두 갈래 나무 중 왼쪽 아이의 결점 개수만 집계하다

1586 단어
Description
두 갈래 나무의 저장 구조를 두 갈래 체인표로 설정하다.두 갈래 체인표의 각 결점은 세 부분으로 구성된다. 왼쪽 아이 바늘, 오른쪽 아이 바늘과 결점 데이터. 그 중에서 한 결점의 좌우 아이가 존재하지 않으면 대응하는 바늘은 비어 있고 빈 바늘은 문자^로 차지한다.
Input
입력은 두 부분을 포함한다. 첫 번째 부분, 입력 테스트 그룹 수 T(T<=10) 두 번째 부분, T줄은 줄마다 비어 있지 않은 두 갈래 나무, 두 갈래 나무는 순서대로 훑어보고 빈 바늘은 문자^로 위치를 차지한다.테스트를 할 때, 두 갈래 나무는 20개의 결점을 넘지 않는다.
Output
하나의 정수는 이 두 갈래 나무 중 왼쪽 아이만 있는 결점 개수를 대표한다.
Sample Input 2 ABC^^^^ ABD^^E^^CF^^G^^
Sample Output 2 0
#include  
#include  
#include  
typedef struct node{  
    char ch;  
    struct node *Lchild;  
    struct node *Rchild;  
}BiTNode,*BiTree;  
void Q_CreatTree(BiTree *T);  
int NodeNumber_1(BiTree T);
int NodeNumber_2(BiTree T);
int NodeNumber_0(BiTree T);
void Deepth(BiTree T,int *h);
int main(void)  
{  
	int n;
	scanf("%d",&n);
	getchar();
	while(n--)
	{
		int h = 0; 
    	BiTree T;
		Q_CreatTree(&T);
		getchar();
		Deepth(T,&h);
		printf("%d
",h); } return 0; } void Q_CreatTree(BiTree *T) { char str; str=getchar(); if(str=='^') { *T=NULL; } else { (*T)=(BiTree)malloc(sizeof(BiTNode)); (*T)->ch=str; Q_CreatTree( &( (*T)->Lchild ) ); Q_CreatTree( &( (*T)->Rchild ) ); } } void Deepth(BiTree T,int *h) { if(T) { if(T->Lchild&&!T->Rchild) { (*h)+=1; } Deepth(T->Lchild,h); Deepth(T->Rchild,h); } }

좋은 웹페이지 즐겨찾기