106タイトル:配列そこ及び構成バイナリシーケンス後順

A. 問題の説明

トラバースバイナリツリーは、ツリー行きがけ順に従って構成されています。

 

注意:

あなたは木が要素と重複しないと仮定することができます。

 

例えば、与えられました

 

プレオーダーINORDER = [9,3,15,20,7]

後順後順= [9,15,7,20,3]

以下のバイナリツリーを返します。

 

    3

    / \

   9 20

        / \

      15 7

 

II。問題解決のためのアイデア

このトピックやアイデア:配列の使用と帰りがけ順を解決するために備えて、105個の質問はほとんど同じですし、最終順位は、この差はありません、ルートに変更する必要があります後の最初の順序は、ルートノードでなければなりません直前ハンは、具体的には、第1の105のタイトルを見て、言いました。

III。結果

実行時:21ミリ秒は、Javaの提出内のすべてのユーザーの37.40パーセントを打ちます

メモリ消費量:51.4メガバイトには、Javaの提出内のすべてのユーザーの8.79パーセントを打ちます

IV。Javaコード

クラスソリューション{
     公共のTreeNode buildTree(INT [] INORDER、INT []後順){
         場合(postorder.length> 0 ){ 
             ツリーノードのルート = 新しいツリーノード(後順[postorder.length-1 ])。
             一覧 <整数>オーダー= 新しいのArrayList <Integer型> ();
             以下のためにINT I 0 =; I <inorder.length; I ++ ){ 
                 order.add(INORDER [I])。
             } 
             getTree(後順、postorder.length -1 、順序、根);         
             リターンルート; 
         } {
              戻り ヌル
         } 
    } 
      公共 ボイド getTree(INT []後順、INT番号、一覧<整数> 順序、ツリーノードのルート){
         場合(order.size()== 1 ){
             リターン
        } 
        
        INT ordernum = order.indexOf(後順[数])。
        もし(ordernum> 0 ){ 
        リスト <整数> leftOrder = 新規のArrayList <整数>(order.subList(0 、ordernum))。        
        以下のためのINT iは数= 1; I> = 0; i-- 
        { 
            場合(leftOrder.contains(後順[I])){ 
                root.left = 新しいツリーノード(後順[I])。
                getTree(後順、I、leftOrder、root.left)。
                休憩; 
            } 
            
         } 
        } 
        
        もし(ordernum <order.size() - 1 
        { 
            リスト <整数> rightOrder = 新規のArrayList <整数>(order.subList(ordernum + 1 、order.size()))。
            INT J =番号-1; J> = 0; j-- ){
                 もし(rightOrder.contains(後順[J])){ 
                    root.right = 新しいツリーノード(後順[J])。
                    getTree(後順、J、rightOrder、root.right)。
                    休憩; 
                } 
            } 
        } 
       
    } 
}

 

おすすめ

転載: www.cnblogs.com/xiaobaidashu/p/11829126.html