本文參考自《劍指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實現合集??