判斷對稱二叉樹
阿新 • • 發佈:2018-07-09
bsp style tree 判斷 bool 但是 spa test treenode
給定一個二叉樹,檢查它是否是鏡像對稱的。
例如,二叉樹 [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
解題思路:
若二叉樹是鏡像對稱的,處於同一層對稱的兩個節點node1與node2,
node1的值與node2的值必相等,且node1.left與node2.right的值也相等,且node1.right 與 node2.left的值也相等。
如上例1中,同處於第二層的對稱的兩個節點(2 與 2),二者值相等,且node1的左子結點(3)與node2的右子節點(3)值相等,且node1的右子結點(4)與node2的左子節點(4)值相等。
實現代碼:
// 記錄判斷結果 private static boolean res = true; private static void test(TreeNode node1, TreeNode node2) { // 若已得到該樹不對稱,返回 if (!res) return; if (node1!=null && node2!=null) { // 兩個節點的值是否相等 if (node1.val != node2.val) { res= false; return; } // 兩個節點的子節點 test(node1.left, node2.right); test(node1.right, node2.left); } else if (node1==null && node2==null) return; else res = false; }
判斷對稱二叉樹