Leetcode-101.對稱二叉樹
阿新 • • 發佈:2021-01-27
對稱二叉樹–遞迴實現
首先考慮對稱二叉樹最簡單的性質----一個結點的左右子樹的值相等
看起來非常直觀,但我們還要考慮空結點的情況
如下圖
因為是對稱的二叉樹,我們需要比較的點是
①左結點的左子樹和右結點的右子樹的值是否相等
②左節點的右子樹和右結點的左子樹的值是否相等
然後開始解題吧
遞迴實現
安全性的檢查
if(root == null){
return true;
}
根節點為空自然是對稱的,所以返回true
列舉對稱的情況:
左右子樹相等(都為空 返回true
注意左右子樹判空的順序,先進行判空再判斷值是否相等,不然會丟擲異常
public boolean isEqual(TreeNode L, TreeNode R) { if(L == null && R == null){ return true; } if(L == null || R == null || L.val != R.val){ return false; } return isEqual(L.left,L.right) && isEqual(R.left, R.right); }
以下為全程式碼
public boolean isSymmetric(TreeNode root){ if(root == null){ return true; } return isEqual(root.left,root.right); } public boolean isEqual(TreeNode L, TreeNode R) { if(L == null && R == null){ return true; } if(L.val != R.val || L == null || R == null){ return false; } return isEqual(L.left,L.right) && isEqual(R.left, R.right); }