二叉树对称-递归

package JianZhioffer;
/**
 * 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
 */
//如果直接生成对称的树再比较的话内存中的原来的树也改变了无法比较。。。
public class test28 { public static void main(String[] args) { TreeNode t=new TreeNode(1); t.left=new TreeNode(2); t.right=new TreeNode(2); t.left.left=new TreeNode(3); t.left.right=new TreeNode(4); t.right.left=new TreeNode(4); t.right.right=new TreeNode(3); System.out.println(isSymmetric(t)); } public static boolean isSymmetric(TreeNode root) { if(root==null){ return true; } return helper(root.left, root.right); } public static boolean helper(TreeNode L,TreeNode R){ if(L==null&&R==null){ return true; }else if(L==null||R==null||L.val!=R.val){ return false; } return helper(L.left, R.right)&&helper(L.right, R.left); } }
原文地址:https://www.cnblogs.com/jieyi/p/14164005.html