1. 程式人生 > >【Java】 劍指offer(27) 二叉樹的鏡像

【Java】 劍指offer(27) 二叉樹的鏡像

.cn tree 解釋 問題 true mir 形象 收獲 ror

本文參考自《劍指offer》一書,代碼采用Java語言。

更多:《劍指Offer》Java實現合集

題目 

  請完成一個函數,輸入一個二叉樹,該函數輸出它的鏡像。

思路

  畫圖可以很清晰地得到思路:先前序遍歷,對每個結點交換左右子結點。

測試算例 

  1.功能測試(普通二叉樹;左斜樹;右斜樹;一個結點)

  2.特殊測試(根結點為null;)

Java代碼

//題目:請完成一個函數,輸入一個二叉樹,該函數輸出它的鏡像。

public class MirrorOfBinaryTree {
	public class TreeNode {
	    int val = 0;
	    TreeNode left = null;
	    TreeNode right = null;
	    public TreeNode(int val) {
	        this.val = val;
	    }
	}
	
    public void Mirror(TreeNode root) {
        if(root==null)
        	return;
        //左右子結點交換
        TreeNode tempNode = root.left;
        root.left=root.right;
        root.right=tempNode;  	

        Mirror(root.left);
        Mirror(root.right);
    }
}

   

收獲

  畫圖使抽象問題形象化,面試時要在編程前先用畫圖、舉例子等來解釋思路。

  

更多:《劍指Offer》Java實現合集

  

【Java】 劍指offer(27) 二叉樹的鏡像