題目
解析
???? 本題和之前的那道判斷兩個(gè)二叉樹是否相等基本一致(詳情點(diǎn)擊)钻蹬,但是多了一點(diǎn)的是逻谦,題目只給了一個(gè)傳根結(jié)點(diǎn)的函數(shù)掺栅,我們需要引入另外一個(gè)包含兩個(gè)參數(shù)的用于比較是否鏡像對(duì)稱的函數(shù)陕习。
???? 之前那道判斷兩個(gè)結(jié)點(diǎn)是否相等判斷的是根結(jié)點(diǎn)是否相等以及葉子結(jié)點(diǎn)是否相等膊升,鏡像相似無(wú)非是判斷根結(jié)點(diǎn)是否相等秧荆,以及左子結(jié)點(diǎn)和右子結(jié)點(diǎn)是否相等即可。
代碼
public class Main {
public static void main(String[] args) {
TreeNode t1 = new TreeNode(1);
t1.left = new TreeNode(2);
t1.right = new TreeNode(2);
t1.left.left = new TreeNode(3);
t1.left.right = new TreeNode(4);
t1.right.left = new TreeNode(4);
t1.right.right = new TreeNode(3);
// TreeNode t2 = new TreeNode(1);
// t2.left = new TreeNode(2);
// t2.right = new TreeNode(2);
System.out.println(new Main().isSymmetric(t1));
}
public boolean isSymmetric(TreeNode root) {
if (root == null) return true;
return isSymmetric(root.left, root.right);
}
public boolean isSymmetric(TreeNode left, TreeNode right) {
if (left == null && right == null)
return true;
else if (left != null && right == null || left == null && right != null)
return false;
else
return left.val == right.val && isSymmetric(left.left, right.right) && isSymmetric(left.right, right.left);
}
}