[質問バンクをスワイプ] Swordは、二分木の鏡像であるOffer_プログラミング質問を指します。

タイトル説明

指定されたバイナリツリーを操作し、ソースバイナリツリーのミラーイメージに変換します。

説明を入力してください:

制限時間: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);
}

 

おすすめ

転載: blog.csdn.net/weixin_42339197/article/details/100148251