【劍指Offer】二叉樹——二叉樹鏡像的變換

package cn.dzp.flyroc.offer;

import java.util.Stack;

public class MirrorDemo {

    /*題目描述:操做給定的二叉樹,將其變換爲源二叉樹的鏡像*/


    /*二叉樹的鏡像定義:源二叉樹
        8
       /  \
      6   10
    / \  / \
    5  7 9 11
    鏡像二叉樹
        8
       /  \
      10   6
    / \  / \
    11 9 7  5*/

    /*思路:使用遞歸或非遞歸方式交換每一個節點的左右子樹位置*/

    //代碼實現
    public class TreeNode{

        int val;   //定義節點值
        TreeNode left;      //定義左子樹
        TreeNode right;     //定義右子樹

        TreeNode(int val){

            this.val = val;

        }
    }


    public void Mirror(TreeNode root){

        //判斷樹是否爲空
        if (root == null){

            return;
        }


            //左右子樹交換
            TreeNode temp = root.left;      //將左子樹賦值給臨時變量
            root.left = root.right;     //將右子樹賦值給左子樹
            root.right = temp;      //將臨時變量賦值給右子樹

        //判斷左子樹是否交換完成
        if (root.left != null){

            Mirror(root.left);

        }

        //判斷右子樹是否交換完成
        if (root.right !=null){

            Mirror(root.right);
        }

    }
}
相關文章
相關標籤/搜索