1. 程式人生 > >判斷對稱二叉樹

判斷對稱二叉樹

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; }

判斷對稱二叉樹