1: 구조 체인식 두 갈래 나무(二)
먼저 알아야 할 것은:
(1): n개의 서로 다른 노드의 두 갈래 트리는 모두 그의 중서 서열과 선서 서열 또는 중서 서열과 후서 서열에 의해 유일하게 확정될 수 있다
(2): 두 가지 서열로 두 갈래 나무를 정할 때 선순과 후순 서열의 작용은 두 갈래 나무의 뿌리 노드를 확정하는 것이고, 중순 서열의 작용은 좌우 서브나무의 중순 서열을 확정하는 것이다
(1)의 증명은 수학 귀납법으로 할 수 있지만 (2)의 결론은 명백하다
구현:
1: 중간 및 선행 시퀀스로 구성
BTNode *CreateBTree(char pre[], char in[], int n)
{
//pre , in ,n ; 0
BTNode *p;
char data, *temp;
int i;
if( n<=0 ) return NULL;// ,
data=*pre;//
p=new BTNode;//
p->data=data;
for(temp=in; temp<in+n; temp++ )// in
if( *temp==data ) break;
i=temp-in;// in i
p->left=CreateBTree(pre+1, in, i);//
p->right=CreateBTree(pre+i+1, temp+1, n-i-1);//
return p;//
}
2: 중간 및 하위 시퀀스로 구성
BTNode *CreateBTree(char post[], char in[], int n)
{
//post , in ,n ; 0
BTNode *p;
char data, *temp;
int i;
if( n<=0 ) return NULL;
data=*(post+n-1);//
p=new BTNode;//
p->data=data;
for(temp=in; temp<in+n; temp++ )// in
if( *temp==data ) break;
i=temp-in;// in i
p->left=CreateBTree(post, in, i);//
p->right=CreateBTree(post+i, temp+1, n-i-1);//
return p;//
}
2: 아이 사슬에 저장된 여러 갈래 나무를 두 갈래 나무로 바꾼다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.