ソリューション:私たちは、元のツリー内のすべてのノードを見つけることができますが周りのミラー息子の交換の木です!
だから我々は再帰的に元のツリー内のすべてのノードを横断し、左右の各ノードの息子を交換することができます。
I:再帰的にどのように再帰その後、ツリーのすべてのノードをトラバース?
/ * *
。* Aバイナリツリーノードの定義
*構造体のTreeNode {
* INTヴァル;
*ツリーノード*左;
*ツリーノード*右;
*ツリーノード(INT X):ヴァル(X)、左(NULL)、右(NULL) } {
*};
* /
クラスソリューション{
パブリック:
無効ミラー(TreeNodeの* ルート){
IF(!ルート)
// 戻り値のNULL;書き込みが間違っている
リターン、
スワップ(ルート - >左、root->右)。// 交換左サブツリー(ノード)
/ * ツリー内のすべてのノードは、正規化横断してもよい* /
ミラー(ルート - > 左)。
ミラー(ルート - > 右)。
}
}。