题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。如果一个二叉树和它的镜像一样,那么他是对称的。
解题思路:
- 前序做遍历是先访问根节点,再访问左子树和右子树。我们可以再定义一种遍历方式,先访问根节点,再访问右子树,再访问左子树。
- 通过这两种遍历方式,判断每次遍历的节点是否一样,一样的话就说明是对称的。
代码
boolean isSymmertrical(TreeNode root) {
if (root == null) {
return true;
}
return isSymmertrical(root.left, root.right);
}
boolean isSymmertrical(TreeNode root1, TreeNode root2) {
if (root1 == null && root2 == null) {
return true;
}
if (root1 == null || root2 == null) {
return false;
}
if (root1.value != root2.value) { // 判断根节点
return false;
}
return isSymmertrical(root1.left, root2.right) &&
isSymmertrical(root1.right, root2.left);
}
网友评论