Topic:
Given a binary tree, check whether it is a mirror of the itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
1 / 2 2/\/3 4 4 3
But the following are not:
1 / 2 2 \ 3 3
Solving:
Symmetry is required that each layer from left to right is exactly equal to right to left, there are two solutions to a non-recursive, a recursive.
Non-recursive:
public static Boolean issymmetric (TreeNode root) {if (root==null) return true; Queue<treenode> left=new linkedlist<> (); Queue<treenode> right=new linkedlist<> (); if (root.left==null) Left.offer (root.left); if (root.right== NULL) Right.offer (Root.right), while (!left.isempty () &&!right.isempty ()) {TreeNode l=left.poll (); TreeNode R=right.poll (); if (l==null&&r==null) continue;if (l==null| | R==null) return false;if (L.val!=r.val) return False;left.offer (L.left); Left.offer (l.right); Right.offer (r.right); Right.offer (r.left);//reverse Insert form mirror}if (Left.isempty () &&right.isempty ()) return True;else {return false;}
Recursion:
public Boolean isSymmetric2 (TreeNode root) {if (root==null) return true; else {return issame (Root.left, root.right);} } public boolean issame (TreeNode Left,treenode right) {if (left==null&& right==null) return true; if (left==null| | Right==null) return false; if (Left.val!=right.val) return false; else {return Issame (Left.left, Right.right) &&issame (Left.right, right.left);} }
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
LeetCode101 Synmetrictree Java