1099ビルドAバイナリ検索ツリー(30分)

Aバイナリ検索ツリー(BST)を再帰的に以下の特性を有するバイナリツリーのように定義されます。

ノードの左サブツリーが少ないノードのキーよりもキーでノードのみが含まれています。
ノードの右サブツリーを超えるまたはノードのキーと同じキーを持つ唯一のノードを含みます。
左と右のサブツリーどちらも二分探索木でなければなりません。
バイナリツリーの構造と異なる整数キーのシーケンスが与えられると、ツリーにこれらのキーを充填する唯一の方法があるように得られた木を満たすBSTの定義。あなたは、そのツリーの出力レベル順トラバーサル順序になっています。試料を図1及び2で示されています。
ここに画像を挿入説明

入力仕様:

各入力ファイルには、1つのテストケースが含まれています。各場合について、最初の行は、ツリー内のノードの総数である正の整数N(≤100)を与えます。次のN行はそれぞれのノードは0からN-1まで番号が付けられていることを条件とする左およびフォーマットleft_indexノードright_indexの右子供を含み、0は常にルートです。一人の子供が欠落している場合は、-1 NULLの子ポインタを表します。最終的にN個の異なる整数キーが最後の行に示されています。

出力仕様:

各テストケースのために、一列にそのツリーのレベル順トラバーサル順序を印刷します。すべての数字は行の末尾に余分なスペースを、スペースで区切らなければなりません。

サンプル入力:

9
1 6
2 3
-1 -1
-1 4
5 -1
-1 -1
7 -1
-1 8
-1 -1
73 45 11 58 82 25 67 38 42

サンプル出力:

58 25 82 11 38 67 45 73 42

アイデア:

1.入力:
係る観察図を図所与のノードプレオーダートラバーサル連続数字入力ノード情報が最初トラバーサルに従って与えられています。したがって、構造は、ノードによってベクトルを格納されている全てのノード、添字は点のノード番号であるベクトルを表現は、順次このツリー構造内の入力情報を読み取ることのみが必要です。
2.処理:
構築ツリートラバーサル順序、特定の非減少得られた配列(二分探索木)。こうして第一ソートキーと、ツリートラバーサルシーケンス、順次割り当てられたキー値。これは、バイナリ検索ツリー風雲良いを構築することができます。
3.出力:
出力キューのシーケンスを使用して。

出典:

#include<bits/stdc++.h>
#include<stdio.h>
#define Max 101
using namespace std;
typedef struct node{
    int key;
    int left;
    int right;
}Node;
vector<Node> Tree;
int k[Max];
int cnt=0;
void in_travel(int s)
{
    if(Tree[s].left!=-1)
        in_travel(Tree[s].left);
    Tree[s].key=k[cnt++];
    if(Tree[s].right!=-1)
        in_travel(Tree[s].right);
}
int main()
{
    int n;cin>>n;
    Tree.resize(n+1);
    for(int i=0;i<n;i++)
        scanf("%d %d",&Tree[i].left,&Tree[i].right);

    for(int i=0;i<n;i++)
        cin>>k[i];
    sort(k,k+n);

    in_travel(0);

    queue<int> que;
    que.push(0);
    int f=1;
    while(!que.empty())
    {
        int t=que.front();
        que.pop();
        if(f)
        {
            cout<<Tree[t].key;
            f=0;
        }
        else
            cout<<" "<<Tree[t].key;
        if(Tree[t].left!=-1)que.push(Tree[t].left);
        if(Tree[t].right!=-1)que.push(Tree[t].right);
    }
}

公開された97元の記事 ウォン称賛12 ビュー2403

おすすめ

転載: blog.csdn.net/weixin_43301333/article/details/104080004