【LeetCode-面試演算法經典-Java實現】【101-Symmetric Tree(對稱樹)】,leetcode--java
【101-Symmetric Tree(對稱樹)】【LeetCode-面試演算法經典-Java實現】【所有題目目錄索引】原題
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
1 / \ 2 2 / \ / \3 4 4 3
But the following is not:
1 / \ 2 2 \ \ 3 3
Note:
Bonus points if you could solve it both recursively and iteratively.
題目大意
給定一棵樹,判斷它是否是對稱的。即樹的左子樹是否是其右子樹的鏡像。
解題思路
使用遞迴進行求解,先判斷左右子結點是否相等,不等就返回false,相等就將左子結點的左子樹與右子結果的右子結點進行比較操作,同時將左子結點的左子樹與右子結點的左子樹進行比較,只有兩個同時為真是才返回true,否則返回false。
代碼實現
樹結點類
public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}
演算法實作類別
public class Solution { public boolean isSymmetric(TreeNode root) { if (root == null) { return true; } else { return isSame(root.left, root.right); } } private boolean isSame(TreeNode left, TreeNode right) { if (left == null && right == null) { return true; } if (left != null && right == null || left == null && right != null){ return false; } else { return left.val == right.val && isSame(left.left, right.right) && isSame(left.right, right.left); } }}
評測結果
點擊圖片,滑鼠不釋放,拖動一段位置,釋放後在新的視窗中查看完整圖片。
特別說明歡迎轉載,轉載請註明出處【http://blog.csdn.net/derrantcm/article/details/47333335】
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。