給你一個二叉樹的根節點 root , 檢查它是否軸對稱,
示例 1:
輸入:root = [1,2,2,3,4,4,3]
輸出:true
示例 2:
輸入:root = [1,2,2,null,3,null,3]
輸出:false
提示:
樹中節點數目在范圍 [1, 1000] 內
-100 <= Node.val <= 100
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/symmetric-tree
著作權歸領扣網路所有,商業轉載請聯系官方授權,非商業轉載請注明出處,
代碼
class Solution {
public boolean isSymmetric(TreeNode root) {
return helper(root, root);
}
public boolean helper(TreeNode left, TreeNode right) {
if (left == null && right == null) return true;
if (left == null || right == null) return false;
return left.val == right.val && helper(left.right, right.left) && helper(left.left,right.right);
}
}
總結
- 最重要的是,要觀察出判斷一顆樹是否對稱的條件:
- 左右值相等 && 左左與右右對稱 && 左右與右左對稱
- 判斷對稱需要比較左右子樹,所以 helper 引數為 left 和 right,
- 定義函式 helper (左結點, 右結點)
- 遞回結束條件:遇到空時,2 種情況:
- 左右均為空,屬于對稱,回傳 true
- 一空一不空,不對稱,回傳 false
關于二叉樹的簡單遞回題,重點在于找到判斷樹是否對稱的規律或者說條件,遞回函式的引數也可以是樹的左右結點,而非常見的當前結點,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/498740.html
標籤:其他
