当前位置:网站首页>LeetCode-101-对称二叉树

LeetCode-101-对称二叉树

2022-06-25 18:29:00 z754916067

题目

在这里插入图片描述

思路

  1. 反正是二叉树,先想递归吧,看能不能用递归做出来。
  2. 感觉做不出,又想到能不能用遍历做,先遍历到数组里,如果是对称的话应该会符合一定的规律?
  3. 中序遍历很适合,看数组是否对于根节点对称即可。
  4. 因为会出现根节点和左右子树相同的情况,所以对于null,也需要进行特殊处理,范围在[-100,100],将其视为101即可。

代码

    ArrayList<Integer> ll = new ArrayList<>();
    public boolean isSymmetric(TreeNode root) {
    
        //首先对二叉树进行中序遍历 将数字加入ll中
        InOrder(root);
        //找到根节点的位置 查找是否根据此位置轴对称 如果不对称则返回false
        //位置
        int local = ll.indexOf(root.val);
        //左右
        int left=0,right = ll.size()-1;
        while(left<=local || right>=local){
    
            if(ll.get(left++)!=ll.get(right--)) return false;
        }
        return true;
    }
    public void InOrder(TreeNode root){
    
        if(root.left!=null) InOrder(root.left);
        if(root.left==null&&root.right!=null) ll.add(101);

        ll.add(root.val);
        if(root.right!=null) InOrder(root.right);
        if(root.right==null&&root.left!=null) ll.add(101);

        return;
    }
原网站

版权声明
本文为[z754916067]所创,转载请带上原文链接,感谢
https://blog.csdn.net/z754916067/article/details/125421997