算法:对称二叉树

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

一、问题描述

二、递归算法

三、字符串判断法

总结


提示:以下是本篇文章正文内容,下面案例可供参考

一、问题描述

有一棵二叉树,判断是否是对称二叉树

    1
   / \
  2   2
 / \ / \
3  4 4  3   对称二叉树
    1
   / \
  2   2
   \   \
   3    3   非对称二叉树

二、递归算法

解题思路:

对称二叉树,犹如一张纸对折,两边的内容要完全重复

针对于本题,就意味着左子树的左孩子,和右子树的有孩子相同;左子树的右孩子和右子树的左孩子相同,每一层都相同,最后就是对称的。

代码示例:

public boolean isSameTree(TreeNode p, TreeNode q) {
    if (p == null || q == null) return p == q;
    return (p.val == q.val) && isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}

三、字符串判断法

 将对象转为String,然后根据长度,分别截取前半段和后半段,以最中间的字符分割。

substring(0, str.length/2)   substring(str.length/2 + 1)

判断这两字符串是否相等即可


总结

多动动手画一画,简单到有手就行!

你可能感兴趣的:(算法)