[剑指Offer]-对称的二叉树
程序员文章站
2022-06-17 16:55:21
...
题目描述
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
- 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
解题思路
- 我们利用对称的特性可以分析出,中左右和中右左是一回事,结合题面做个先序遍历和自定义遍历可知:先序遍历(中左右):1,2,3,4,2,4,3, 自定义遍历(中右左):1,2,3,4,2,4,3。
算法图解
参考代码:
package offer;
/**
* 给定一个二叉树,检查它是否是镜像对称的。
* <p>
* 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
* <p>
* 1
* / \
* 2 2
* / \ / \
* 3 4 4 3
* 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
* <p>
* 1
* / \
* 2 2
* \ \
* 3 3
*/
public class Offer28 {
public static void main(String[] args) {
}
static boolean isSymmetrical() {
return isSymmetrical();
}
static boolean isSymmertrical(BinaryTreeNode root1, BinaryTreeNode root2) {
if (root1 == null || root2 == null) {
return false;
}
if (root1 == null && root2 == null) {
return true;
}
if (root1.node_value != root2.node_value) {
return false;
}
return isSymmertrical(root1.leftTree, root2.rightTree) && isSymmertrical(root1.rightTree, root2.leftTree);
}
}
附录
该题源码在我的 ????Github 上面!
上一篇: [转]JVM监控工具
推荐阅读
-
《剑指offer》面试题6 重建二叉树
-
剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。
-
剑指offer31:整数中1出现的次数(从1到n整数中1出现的次数)
-
剑指offer28:找出数组中超过一半的数字。
-
剑指offer27:按字典序打印出该字符串中字符的所有排列
-
C#版剑指Offer-001二维数组中的查找
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
剑指offer13:数组[奇数,偶数],奇数偶数相对位置不变。
-
剑指offer第二天
-
剑指offer JZ31 整数中1出现的次数 Python 解