問題--226フリップバイナリツリーへleetcodeソリューション

バイナリツリーを反転します。
例:
入力:
     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)
            
        戻りルート



おすすめ

転載: blog.51cto.com/12876518/2416872