题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的.
public static boolean isSymmetrical(TreeNode root){
if(root==null)
return true;
return isSym(root.left,root.right);
}
private static boolean isSym(TreeNode left, TreeNode right) {
if(left==null) return right==null;
if(right==null) return left==null;
if(left.val!=right.val) return false;
return isSym(left.left,right.right)&&isSym(left.right, right.left);
}主要就是理解二叉树的镜像定义(参照第27题),递归判断挺简单的。
- 镜像二叉树,其左右子树也必须是镜像对称的
- 镜对称像要求对称的位置上的元素相等
- 以节点A和B为根据节点的两个子树对称等价于:
- 这两个节点上存储的值相等
- 节点A的左子树节点和节点B的右子树上的节点是对称的
- 节点A的右子树节点和节点A的左子树上的节点是对称的
本文介绍了一个用于判断二叉树是否对称的函数实现。通过对二叉树的递归遍历,比较左右子树的值来确定整棵树是否为镜像对称。文章详细解释了递归过程及对称性的定义。
321

被折叠的 条评论
为什么被折叠?



