劍指Offer之二叉樹的映象
阿新 • • 發佈:2019-02-08
題目描述
操作給定的二叉樹,將其變換為源二叉樹的映象。
輸入描述:
二叉樹的映象定義:源二叉樹 8 / \ 6 10 / \ / \ 5 7 9 11 映象二叉樹 8 / \ 10 6 / \ / \ 11 9 7 5
解題思路,遞迴遍歷樹,將樹的左右孩子交換即可。
public class 二叉樹的映象 { public static void Mirror(TreeNode root) { //這樣的情況,為空如何處理 if (root == null){ System.out.println("輸入為空。。。"); } TreeNode my = switchNode(root); System.out.println(my.val); } //定義交換函式 public static TreeNode switchNode(TreeNode treeNode){ if (treeNode == null){ return treeNode; } //交換左右孩子 TreeNode left = treeNode.left; TreeNode right = treeNode.right; treeNode.right = left; treeNode.left = right; //判斷左右孩子是不是為空,不為空,將左右孩子的孩子交換 if (treeNode.right!=null){ switchNode(treeNode.right); } //這兒不能使用else if,使用else if當上一個if為true時候,就不會執行了!!!注意 if (treeNode.left!=null){ switchNode(treeNode.left); } return treeNode; } public static void main(String [] args){ TreeNode treeNode1_1 = new TreeNode(8); TreeNode treeNode1_2 = new TreeNode(6); TreeNode treeNode1_3 = new TreeNode(10); TreeNode treeNode1_4 = new TreeNode(5); TreeNode treeNode1_5 = new TreeNode(7); TreeNode treeNode1_6 = new TreeNode(9); TreeNode treeNode1_7 = new TreeNode(11); treeNode1_1.left = treeNode1_2; treeNode1_1.right = treeNode1_3; treeNode1_2.left = treeNode1_4; treeNode1_2.right = treeNode1_5; treeNode1_3.left = treeNode1_6; treeNode1_3.right = treeNode1_7; Mirror(treeNode1_1); } }
堅持寫程式碼,相信總會提高的!