[LintCode]グレーターツリーに661コンバートBST

バイナリ検索ツリー(BST)を考えると、本来のBSTのすべてのキーはBSTの元のキーよりも大きいすべてのキーの元のキープラス合計に変更されるような大ツリーに変換します。

例1:

Input : {5,2,13}
              5
            /   \
           2     13
Output : {18,20,13}
             18
            /   \
          20     13

例2:

Input : {5,3,15}
              5
            /   \
           3     15
Output : {20,23,15}
             20
            /   \
          23     15


/ ** 
 *ツリーノードの定義:
 *パブリッククラスのTreeNode { 
 *公共int型のval; 
 *公共のTreeNodeは、右から左。
 *公共のTreeNode(int型のval){ 
 * this.val =ヴァル。
 * this.left = this.right = NULL; 
 *} 
 *} 
 * / 

パブリック クラスソリューション{
     / ** 
     * @paramのルート:バイナリツリーのルート
     * @return :新しいルート
      * / 
    公共のTreeNode convertBST(TreeNodeのルート){
         // ここにコードを書く
        のint []合計= 新しい INT [] {0}。
        ヘルパー(根、合計)。
        リターンルート。
    } 
    
    プライベート ボイドヘルパー(ツリーノードのルート、INT []和){
         場合(ルート== NULL ){
             リターン
        } 
        ヘルパー(root.right、合計)。
        和[ 0] + = root.val。
        root.val =和[0 ]。
        ヘルパー(root.left、合計)。
    } 
}

 

おすすめ

転載: www.cnblogs.com/xuanlu/p/12549881.html
おすすめ