두 갈래 검색 트리

1725 단어
두 갈래 검색 트리
 
 
또 두 갈래로 나무를 검색하는 순서가 반복된다.
 
1. 나무를 짓는 순서는 전체 나무의 모양에 영향을 준다.
2. 자원을 방출하는 것을 잊지 마라
3. 이중 지침과 인용 최적화 프로그램을 사용할 수 있다.
 
코드의 일부 printf () 는 이전에 설정한 단점으로 무시할 수 있습니다
#include<iostream>
using namespace std;

struct BST
{
	char ch;
	BST *lson,*rson;
	BST()
	{
		ch=0;                   //       
		lson=rson=0;
	}
} *root;

BST *insert(BST *p,char x)       // ,p   ;  ,p  ,1.x==p->ch 2.x< 3.x>  
{//printf("x=%c p==%d
",x,p);; if(p==NULL) { p=new BST; p->ch=x; return p; } // printf("~"); if(x<p->ch) p->lson=insert(p->lson,x); if(x>p->ch) p->rson=insert(p->rson,x); return p; } char RE[11];int nRE; void pre_order(BST *p) // ,p ,p { if(p) RE[nRE++]=p->ch; // cout<<"RE="<<RE<<endl; if(p->lson) pre_order(p->lson); if(p->rson) pre_order(p->rson); } void Free(BST *p) { if(p->lson) Free(p->lson); if(p->rson) Free(p->rson); delete p; } int main() { int n,i,j,len; char t[11],model[11]; while(scanf("%d",&n),n) { root=0; scanf("%s",t); len=strlen(t); for(i=0;i<len;i++) root=insert(root,t[i]); nRE=0;pre_order(root);RE[nRE]='\0'; strcpy(model,RE); for(i=1;i<=n;i++) { BST *p=0;//printf("~"); scanf("%s",t);len=strlen(t);// printf("!!%s
",t); for(j=0;j<len;j++) p=insert(p,t[j]); nRE=0;pre_order(p);RE[nRE]='\0'; if(strcmp(model,RE)==0) printf("YES
"); else printf("NO
"); Free(p); } // printf("@"); Free(root); } return 0; }

 

좋은 웹페이지 즐겨찾기