劍指 Offer 28. 對稱的二叉樹(遞迴)1
阿新 • • 發佈:2020-12-10
技術標籤:LeetCode
請實現一個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。
例如,二叉樹[1,2,2,3,4,4,3] 是對稱的。
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面這個[1,2,2,null,3,null,3] 則不是映象對稱的:
1
/ \
2 2
\ \
3 3
示例 1:
輸入:root = [1,2,2,3,4,4,3]
輸出:true
示例 2:
輸入:root = [1,2,2,null,3,null,3]
輸出:false
解法一:遞迴
時間複雜度 O(N): 其中 N 為二叉樹的節點數量,每次執行 recur() 可以判斷一對節點是否對稱,因此最多呼叫 N/2 次 recur() 方法。
class Solution { public boolean isSymmetric(TreeNode root) { return root == null ? true : recur(root.left, root.right); } boolean recur(TreeNode L, TreeNode R) { if(L == null && R == null) return true; if(L == null || R == null || L.val != R.val) return false; return recur(L.left, R.right) && recur(L.right, R.left); } }