18二分木の再構築

 

 

 

クラス解決{
 パブリック
    ツリーノード * reConstructBinaryTree(ベクトル< 整数 >予め、ベクトル< INT > VIN){
         int型 vinlen = vin.size()。
        もし(vinlen == 0 リターンNULL; 
        ベクトル < 整数 > pre_left、pre_right、vin_left、vin_right。
  
        ツリーノード *ヘッド= 新しいツリーノード(PRE [ 0 ])。
    
        INT GEN = 0 ;
        以下のためのint型 I = 0; I <vinlen; I ++ 
        { 
            IF(VIN [I] ==事前[ 0 ])
            { 
                ゲン = I;
                 BREAK ; 
            } 
        } 
     
        のためのINT I = 0 ; I <ゲン; I ++ 
        { 
            vin_left.push_back(VIN [私は]); // 前順トラバース配列左サブツリー 
            pre_left.push_back([I +を事前1。 ]); // 前順トラバース配列左サブツリー前
        } 
    
        ためINT I = +ジェン1。 ; I <vinlen; I ++  
        {
             vin_right.push_back(VIN [I]); // 前順トラバーサル順序右サブツリー 
             pre_right.push_back([I]をPRE); // 前順走査シーケンス右サブツリー前
        } 

         ヘッド - > =左(pre_left、reConstructBinaryTreeをvin_left);  - >右= reConstructBinaryTree(pre_right、vin_right);
          戻りヘッド;         

    } 
}。

 

おすすめ

転載: www.cnblogs.com/make-big-money/p/12359771.html