バイナリ検索ツリー(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、合計)。 } }