タイトル1485:二叉チェーンテーブルに格納された二叉木
2647 ワード
タイトルの説明
ツリー構造は、ツリーとツリーで最もよく使用される重要な非線形データ構造です.各ノードに対して最大2課のサブツリーしかないツリーの1種類を二叉ツリーと呼ぶ.ツリーのチェーンストレージ構造は、次のように定義された重要なデータ構造です.
一方、ツリーの前シーケンス、中シーケンスの遍歴は、ツリーのすべてのノードにアクセスできるアルゴリズムとして非常に重要であり、以下に、先シーケンスの遍歴と2つの中シーケンスの遍歴のアルゴリズムをそれぞれリストする.
1つ目の中順遍歴方法(アルゴリズム6.3):
第2の中間シーケンス遍歴方法(アルゴリズム6.2):
文字列を読み込むことで、ツリーを作成するアルゴリズムは次のとおりです.
この問題では、空のサブノードを表すスペースと、ノードの内容を表す大文字の文字列を先に繰り返します.この文字列を使用してツリーを作成し、タイトルの説明の1つのシーケンスループと2つのシーケンスループのアルゴリズムに従って、各非空ノードを出力してください.
入力
入力は1行のみで、二叉木を作成するための文字列Sが含まれています.Sが合法的な二叉木先順遍歴文字列であることを保証し、ノードの内容は大文字のみであり、Sの長さは100を超えない.
しゅつりょく
3行あり、各行には一連の文字が含まれており、それぞれ先順、中順、中順で得られたノードの内容を表し、各アルファベットの後にスペースを出力します.行末出力改行に注意してください.
サンプル入力
サンプル出力
ヒント[+]
***プロンプトが非表示になっているので、上[+]をクリックすると***が表示されます.
ソース
データ構造アルゴリズムの教育問題
ツリー構造は、ツリーとツリーで最もよく使用される重要な非線形データ構造です.各ノードに対して最大2課のサブツリーしかないツリーの1種類を二叉ツリーと呼ぶ.ツリーのチェーンストレージ構造は、次のように定義された重要なデータ構造です.
一方、ツリーの前シーケンス、中シーケンスの遍歴は、ツリーのすべてのノードにアクセスできるアルゴリズムとして非常に重要であり、以下に、先シーケンスの遍歴と2つの中シーケンスの遍歴のアルゴリズムをそれぞれリストする.
1つ目の中順遍歴方法(アルゴリズム6.3):
第2の中間シーケンス遍歴方法(アルゴリズム6.2):
文字列を読み込むことで、ツリーを作成するアルゴリズムは次のとおりです.
この問題では、空のサブノードを表すスペースと、ノードの内容を表す大文字の文字列を先に繰り返します.この文字列を使用してツリーを作成し、タイトルの説明の1つのシーケンスループと2つのシーケンスループのアルゴリズムに従って、各非空ノードを出力してください.
入力
入力は1行のみで、二叉木を作成するための文字列Sが含まれています.Sが合法的な二叉木先順遍歴文字列であることを保証し、ノードの内容は大文字のみであり、Sの長さは100を超えない.
しゅつりょく
3行あり、各行には一連の文字が含まれており、それぞれ先順、中順、中順で得られたノードの内容を表し、各アルファベットの後にスペースを出力します.行末出力改行に注意してください.
サンプル入力
ABC DE G F
サンプル出力
A B C D E G F
C B E G D F A
C B E G D F A
ヒント[+]
***プロンプトが非表示になっているので、上[+]をクリックすると***が表示されます.
ソース
データ構造アルゴリズムの教育問題
/*********************************
* :2013-3-7
* :SJF0115
* : OJ 1485:
* :http://acmclub.com/problem.php?id=1485
* :AC
* :
* :
**********************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char array[101];
//
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//
int CreateBiTree(BiTree &T,int &index,int &n){
if(index >= n){
return 0;
}
// ( ),
if(array[index] == ' '){
T = NULL;
index++;
}
else{
T = (BiTree)malloc(sizeof(BiTNode));
//
T->data = array[index];
index++;
//
CreateBiTree(T->lchild,index,n);
//
CreateBiTree(T->rchild,index,n);
}
return 0;
}
//
void Visit(BiTree T){
printf("%c ",T->data);
}
//
void PreOrder(BiTree T){
if(T != NULL){
//
Visit(T);
//
PreOrder(T->lchild);
//
PreOrder(T->rchild);
}
}
//
void InOrder(BiTree T){
if(T != NULL){
//
InOrder(T->lchild);
//
Visit(T);
//
InOrder(T->rchild);
}
}
//
void PostOrder(BiTree T){
if(T != NULL){
//
PostOrder(T->lchild);
//
PostOrder(T->rchild);
//
Visit(T);
}
}
int main()
{
int len,index;
while(gets(array)){
BiTree T;
len = strlen(array);
index = 0;
//
CreateBiTree(T,index,len);
//
PreOrder(T);
printf("
");
//
index = 0;
InOrder(T);
printf("
");
//
index = 0;
InOrder(T);
printf("
");
}
return 0;
}