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); } } }