判断对称二叉树

Posted deltadeblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断对称二叉树相关的知识,希望对你有一定的参考价值。

给定一个二叉树,检查它是否是镜像对称的。

例如,二叉树 [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;
    }

 

以上是关于判断对称二叉树的主要内容,如果未能解决你的问题,请参考以下文章

60.对称的二叉树

第76题给定一棵二叉树,判断它是否是对称的

二叉树对称判断

判断对称二叉树

给定一个二叉树,如何判断它是对称的

给定一个二叉树,如何判断它是对称的