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



