バイナリツリーを反転します。 例: 入力: 4 / \ 27 / \ / \ 1369 出力: 4 / \ 72 / \ / \ 9631
問題解決のアイデア:
バイナリツリーの問題、一般的に再帰的にすることで解決することができます
C ++
/ ** *バイナリツリーノードの定義。 *構造体のTreeNode { * INTヴァル。 *のTreeNode *左; *のTreeNode *右; *ツリーノード(int型X):(NULL)左のval(X)、右(NULL){} *}。 * / クラスのソリューション{ パブリック: ツリーノード* invertTree(ツリーノード*ルート){ ツリーノード・ノード=ルート。 ツリーノード* TMP = NULL; IF(ノード){ TMP =ノード- >左。 ノード- > =ノード- >右から左。 ノード- >右= TMP; invertTree(ノード- >左)。 invertTree(ノード- >右)。 } ルートを返します。 } }。
パイソン
バイナリツリーノードのための#定義。 #クラスのTreeNode: #デフ__init __(自己、X): #self.val = X #self.left =なし #1 self.right =なし クラスのソリューション: invertTree(自己、ルート:ツリーノード)DEF - >ツリーノード: ノード=ルート もしノード: TMP = node.left node.left = node.right node.right = TMP self.invertTree(node.left) self.invertTree(node.right) 戻りルート