对称的二叉树-Java


public class SymmetricalBinaryTree {

  /**
   * 对称的二叉树
   * <p>
   * 判断二叉树是否对称的,需要定义一个新前序遍历方案,从右节点开始遍历;看是否和左前序遍历相同
   * 要考虑为null的子节点,因为有可能二叉树全部的值都是相同的,但也不是对称二叉树。
   */
  public static boolean isSymmetrical(TreeNode node) {
    return isSymmetrical(node, node);
  }

  public static boolean isSymmetrical(TreeNode node1, TreeNode node2) {
    if (node1 == null && node2 == null) return true;
    if (node1 == null || node2 == null) return false;
    if (node1.value != node2.value) return false;

    return isSymmetrical(node1.leftNode, node2.rightNode) &&
        isSymmetrical(node1.rightNode, node2.leftNode);
  }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容