タイトル説明
指定されたバイナリツリーを操作し、ソースバイナリツリーのミラーイメージに変換します。
説明を入力してください:
制限時間:1秒スペース制限:32768K熱指数:316600
この質問の知識ポイント: ツリー
ツリーの構造を理解するために、前のメモを表示できます。
ツリーとバイナリツリーを理解するための一般的な方法(この記事の最後にある完全なコードを使用して、トピックを記述およびテストできます)
問題分析:
これは非常に単純です。つまり、ツリーのミラー出力です。つまり、ノードの左側のサブツリーが右側のサブツリーになり、右側のサブツリーが左側のサブツリーになります。
これには、各ノードをトラバースし、その左右のサブツリーを交換する必要があります。
再帰的実現、各ノードをトラバースして、再帰的思考を考えることができます(終了条件を追加することを忘れないでください)
function Mirror(root)
{
//结束条件
if(root == null) {
return ;
}
//声明一个变量来存储右结点
var temp = root.right;
//将右结点等于左结点
root.right = root.left;
//将左结点等于右结点
root.left = temp;
//如果存在右结点,继续遍历
Mirror(root.right);
//如果存在左结点,继续遍历
Mirror(root.left);
}
再帰的脱構築の実装
function Mirror(root)
{
//结束条件
if(root == null) return ;
//解构交换
[root.right, root.left] = [root.left, root.right];
Mirror(root.right);
Mirror(root.left);
}