一、題目名稱java
Symmetric Tree(判斷二叉樹是否對稱)函數
二、題目地址code
https://leetcode.com/problems/symmetric-tree/遞歸
三、題目內容leetcode
英文:Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).開發
中文:給定一顆二叉樹,檢查它是否與本身的鏡像是同一棵樹(即圍繞根節點對稱)。get
四、解題方法it
本題與題目「Same Tree」的解法相似,使用遞歸函數考察整棵樹,包括左右對稱節點的值和對稱節點的兩個子枝。須要注意的是比較子枝的時候,比較的位置是對稱的位置,即用左樹的右枝去比較右樹的左枝,用左樹的左枝去比較右樹的右枝。io
一段能夠AC的Java代碼以下:class
/** * 功能說明:LeetCode 101 - Symmetric Tree * 開發人員:Tsybius2014 * 開發時間:2015年8月13日 */ public class Solution { /** * 判斷二叉樹是否對稱 * @param root 二叉樹根節點 * @return true:對稱 false:不對稱 */ public boolean isSymmetric(TreeNode root) { if (root == null) { return true; } return isMirror(root.left, root.right); } /** * 判斷一顆二叉樹的左右兩子節點是否對稱 * @param leftNode 左子節點 * @param rightNode 右子節點 * @return true:對稱 false:不對稱 */ public boolean isMirror(TreeNode leftNode, TreeNode rightNode) { if (leftNode == null && rightNode == null) { return true; } else if ( (leftNode != null && rightNode == null) || (leftNode == null && rightNode != null) || leftNode.val != rightNode.val || !isMirror(leftNode.left, rightNode.right) || !isMirror(leftNode.right, rightNode.left)) { return false; } else { return true; } } }
END