大前端

前端学习之家-大前端

『剑指Offer』28. 对称的二叉树

文章目录

  • 题目
  • 思路
  • 代码

题目

在这里插入图片描述

思路

1、首先对 root 为空和 root 左右子节点不同 判 False
2、其次我们将 root 的左右子树看成两个树 使用 isTrue 进行判断
3、遍历子树 A 和 B 是否完全相同,这里注意 A.Left 与 B.Right 对应,满足对称性。

代码

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func isSymmetric(root *TreeNode) bool {
    if root == nil {
        return true
    }
    return isTrue(root.Left,root.Right)
}

func isTrue(A *TreeNode,B *TreeNode) bool {
    if A == nil && B == nil {
        return true
    }
    if A == nil || B == nil {
        return false
    }
    if A.Val != B.Val {
        return false
    }
    return isTrue(A.Left,B.Right) && isTrue(A.Right,B.Left)
}

发表评论:

Copyright Your WebSite.Some Rights Reserved.