龙空技术网

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

福大大架构师每日一题 137

前言:

现时姐妹们对“c语言二叉树操作”大概比较关心,我们都需要知道一些“c语言二叉树操作”的相关资讯。那么小编在网上搜集了一些关于“c语言二叉树操作””的相关知识,希望姐妹们能喜欢,朋友们快快来学习一下吧!

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

福大大 答案2021-10-05:

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

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

package mainimport "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// 另一棵是翻面树  head2func 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代码]()

标签: #c语言二叉树操作