[ダイナミックプログラミング]は95ユニークなバイナリ検索ツリーIIをleetcode

問題:https://leetcode.com/problems/unique-binary-search-trees-ii/

         再帰的なパスを記述するための最小と最大のコードは、ここに書かれた再帰を使用して、より簡潔であるべきです。

クラスのソリューション{
 パブリック
    のTreeNode *クローン(ツリーノード* pを、int型のval)
    { 
        場合(!p)の戻りnullptr; 
        ツリーノード *ノード= 新しいツリーノード(P->ヴァル+ val)で、
        ノード - >左=クローン(P-> 左、ヴァル)。
        ノード - >右=クローン(P-> 右、ヴァル)。
        リターン・ノード; 
    } 
    ベクトル <ツリーノード*> generateTrees(int型N){ 
        ベクトル <ベクトル<ツリーノード* >> DP(N + 1 )。
        以下のためのint型K = 1K <= N。K ++ 
        { 
            ためINT C = 1 ; <= K C、C ++ 
            { 
                int型 L = C - 1 INTの R = K - C。
                ベクター <ツリーノード*>&左= DP [L]。
                ベクター <ツリーノード*>&右= DP [R]。
                もし(left.size()== 0 && right.size()== 0 
                { 
                    ツリーノード * pを= 新しいですツリーノード(C)。
                    DP [K] .push_back(P)。                    
                } 
                そう であれば(left.size()== 0 
                { 
                    ためint型 iは= 0 ; iはright.size()<; iは++ 
                    { 
                        ツリーノード * pを= 新しいツリーノード(C)。
                        P - >右= クローン(右[I]、C)。
                        DP [K] .push_back(P)。
                    } 
                } 
                そう であれば(right.size()== 0 
                { 
                    INT iが= 0 ; i)は(left.sizeを<; iは++ 
                    { 
                        ツリーノード * pを= 新しいツリーノード(C)。
                        P - > =左、左[I]。
                        DP [K] .push_back(P)。
                    } 
                } 
                
                { 
                    ためint型 I = 0 ; iが(left.sizeを<); iが++ 
                    { 
                        ためINT J = 0 ; J <right.size(); J ++ 
                        {
                            TreeNodeの * P =新しいツリーノード(C); 
                            P - > =左、左[I]。
                            P - >右= クローン(右[J]、C)。
                            DP [K] .push_back(P)。                           
                        } 
                    } 
                } 
            } 
        } 
        戻りDP [n]は、
    } 
}。

 

おすすめ

転載: www.cnblogs.com/fish1996/p/11329774.html