力扣101.對稱二叉樹
阿新 • • 發佈:2021-11-28
本題要立足於一個節點,思考當前節點需要做的事情。當前節點需要做的事情無非就是:判斷其左右子樹是否對稱。具體的判斷方法如下:
1.若左子樹為空,右子樹不空,則不對稱。
2.若左子樹不空,右子樹為空,則不對稱。
3.若左右子樹的值不相等,則不對稱。
4.若左右子樹都為空,則對稱。
5.接下來遞迴判斷左子樹的左是否等於右子樹的右,左子樹的右是否等於右子樹的左。(從題目給的樣圖可觀察出這個條件)
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public boolean isSymmetric(TreeNode root) { if(root==null) return true; return traverse(root.left,root.right); } public boolean traverse(TreeNode left,TreeNode right){ if(left!=null&&right==null) return false; else if(left==null&&right!=null) return false; else if(left==null&&right==null) return true; else if(left.val!=right.val) return false; return traverse(left.left,right.right)&&traverse(left.right,right.left); }