对称二叉树

此博客链接:https://www.cnblogs.com/ping2yingshi/p/13461137.html

对称二叉树

题目链接:https://leetcode-cn.com/problems/symmetric-tree/solution/

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

 示例1

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

1
/ \
2 2
/ \ / \
3 4 4 3
 示例2

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

1
/ \
2 2
\ \
3 3

题解:

        思路:一开始想着用层次遍历,然后对每层数据判断头尾判断是否相等,就像判断是否是回文数一样,但是看到示例2后,就打消了这种思路,

                 然后又想,对每个节点判断左右孩子是否相等。这好像是只对第二层有效,当有三层及以上时,就不符合要求了。

                 然后又想到,前几天写过的层次遍历时,时把每层的节点放到到列表中,那比较每层列表中的数据是否时回文数不就可以了吗,好的,就时这个思路,

代码:

class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root==null)
        return true;
        // Queue <TreeNode> queue=new Linkedlist();
        Queue <TreeNode> queue=new LinkedList();
        queue.add(root);
        while(queue!=null)
        {
            List <Integer> list=new ArrayList();
            int len=queue.size();
           
            for(int i=0;i<len;i++)
            {
                 TreeNode temp=queue.poll();
                 list.add(temp.val);
                 if(temp.left!=null)
                queue.add(temp.left);
                 if(temp.right!=null)
                queue.add(temp.right);
            }
            for(int i=0;i<len;i++)
            {
                if(list.get(i)!=list.get(len-1-i))
                return false;
            }
        }
        return true;
        
    }
}

上面代码运行时显示超时,我真是不知道哪里超时了,我看了题解,我感觉我写的比别人的用的时间少多了。

 

posted @ 2020-08-08 23:59  萍2樱释  阅读(163)  评论(0编辑  收藏  举报