前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >2021-10-05:对称二叉树。给定一个二叉树,检查它是

2021-10-05:对称二叉树。给定一个二叉树,检查它是

原创
作者头像
福大大架构师每日一题
修改2021-10-08 11:37:16
修改2021-10-08 11:37:16
1060
举报

2021-10-05:对称二叉树。给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 1,2,2,3,4,4,3 是对称的。力扣101。

福大大 答案2021-10-05:

递归。head1的左节点 ==head2的右节点。head1的右节点 ==head2的左节点。

代码用golang编写。代码如下:

代码语言:txt
复制
package main

import "fmt"

func main() {
    head := &TreeNode{}
    head.val = 1

    head.left = &TreeNode{}
    head.left.val = 2

    head.right = &TreeNode{}
    head.right.val = 2
    head.left.left = &TreeNode{}
    head.left.left.val = 3
    head.right.right = &TreeNode{}
    head.right.right.val = 3

    ret := isSymmetric(head)
    fmt.Println(ret)
}

type TreeNode struct {
    val   int
    left  *TreeNode
    right *TreeNode
}

func isSymmetric(root *TreeNode) bool {
    return isMirror(root, root)
}

// 一棵树是原始树  head1
// 另一棵是翻面树  head2
func isMirror(head1 *TreeNode, head2 *TreeNode) bool {
    if head1 == nil && head2 == nil {
        return true
    }
    if head1 != nil && head2 != nil {
        return head1.val == head2.val && isMirror(head1.left, head2.right) && isMirror(head1.right, head2.left)
    }
    // 一个为空,一个不为空  false
    return false
}

执行结果如下:

图片
图片

左神java代码

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档