剑指 Offer 28. 对称的二叉树
作者:互联网
题目链接:
剑指 Offer 28. 对称的二叉树
思路:本题采用递归的方式来进行解决,一个树要满足对称,则说明左结点的左节点和右节点的右节点,以及左节点的右节点和右节点的左节点要相等
所以按照这个思路去往下递归,并讨论好空节点的情况。递归的终点:找到不符合条件的情况或是两个结点相等且都为null,其余情况都继续向树的下层递归
代码实现及解析:
1 public boolean isSymmetric(TreeNode root) { 2 if (root == null) { 3 return true; 4 } 5 return recur(root.left,root.right); 6 } 7 8 public boolean recur(TreeNode node1,TreeNode node2) { 9 //处理掉空指针的情况 10 if (node1 == null && node2 == null) {//都为空则返回true(因为此时递归也正好要结束) 11 return true; 12 } 13 if ((node1 == null && node2 != null) || (node1 != null && node2 == null)) {//有为假的情况 14 //则直接返回false,结束递归 15 return false; 16 } 17 if (node1.val != node2.val) { 18 return false; 19 } 20 //一直往下递推,直到递归到双空指针以true结束,或是不满足对称的情况,以false结束 21 return recur(node1.left,node2.right) && recur(node1.right,node2.left); 22 }
标签:null,return,递归,Offer,28,二叉树,node1,node2,节点 来源: https://www.cnblogs.com/jue1e0/p/16136630.html