判断是否是镜像二叉树
镜像二叉树,也称为对称二叉树,是指一棵二叉树,它的左子树是右子树的镜像(或反过来,右子树是左子树的镜像)。判断一个二叉树是否是对称的,可以通过递归的方式进行。以下是一个简单的Java算法实现:
首先,定义二叉树的节点类:
class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }
然后,实现判断是否为镜像二叉树的方法:
public class SymmetricTree { public boolean isSymmetric(TreeNode root) { if (root == null) { return true; // 空树是对称的 } return checkSymmetry(root.left, root.right); } private boolean checkSymmetry(TreeNode left, TreeNode right) { // 如果两个子树都为空,说明当前层级是对称的 if (left == null && right == null) { return true; } // 如果一个子树为空,另一个不为空,说明不对称 if (left == null || right == null) { return false; } // 当前节点值相等,并且左右子树分别对称 return (left.val == right.val) && checkSymmetry(left.left, right.right) && checkSymmetry(left.right, right.left); } public static void main(String[] args) { // 示例代码,创建一个对称的二叉树并测试 TreeNode tree = new TreeNode(1); tree.left = new TreeNode(2); tree.right = new TreeNode(2); tree.left.left = new TreeNode(3); tree.left.right = new TreeNode(4); tree.right.left = new TreeNode(4); tree.right.right = new TreeNode(3); SymmetricTree solution = new SymmetricTree(); System.out.println(solution.isSymmetric(tree)); // 应输出true } }
在SymmetricTree
类中实现了isSymmetric
方法来判断整个二叉树是否对称。checkSymmetry
是一个辅助方法,它递归地比较两个子树是否互为镜像。如果在任意一层发现不满足对称条件(比如节点值不相等,或者一边的子树为空而另一边不为空),则立即返回false
。只有当所有层级都满足对称条件时,才返回true
,表明整棵树是对称的。
收藏文章数量从多到少与“把书读薄”是一个道理