标签:实现 div 大于 static bool 方法 boolean 解决 tin
三、算法:
思路:用高度大于2的二叉树举例来说吧,也就是上面第一个例子,只要结点1的左孩子和结点2的右孩子相等,并且结点1的右孩子和结点2的左孩子相等,我们就认为是镜像,前提是结点1和结点2兄弟结点;
递归实现如下:
1 public static boolean isSymmetric(TreeNode root) { 2 if(root == null)
return true; 3 return in(root.left, root.right); 4 } 5 6 7 //递归 8 public static boolean in(TreeNode l1, TreeNode l2){ 9 if(l1 == null && l2 == null)
return true; 10 if(l1 == null || l2 == null)
return false; 11 return l1.val == l2.val && in(l1.left,l2.right) && in(l1.right,l2.left); 12 }
}
非递归调用
//迭代 public static boolean isSymm(TreeNode root){ if(root == null) return true; Queue<TreeNode> q = new LinkedList<>(); q.add(root.left); q.add(root.right); while (!q.isEmpty()) { TreeNode t1 = q.poll(); TreeNode t2 = q.poll(); if (t1 == null && t2 == null) continue; if (t1 == null || t2 == null) return false; if (t1.val != t2.val) return false;
q.offer(t1.left); q.offer(t2.right); q.offer(t1.right); q.offer(t2.left); } return true; }
标签:实现 div 大于 static bool 方法 boolean 解决 tin
原文地址:https://www.cnblogs.com/linghu-java/p/13984542.html