前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法篇:树之对称二叉树

算法篇:树之对称二叉树

作者头像
灰子学技术
发布2020-08-11 16:51:34
3900
发布2020-08-11 16:51:34
举报
文章被收录于专栏:灰子学技术灰子学技术

算法:

本题目主要是对题目的理解,对称二叉树是一个镜像的概念:

举个形象的例子,对称二叉树就是沿着根节点垂直画一条线,然后两边的左右子树对折起来能够重合,这就是对称二叉树,具体场景如下所示:

代码语言:javascript
复制
1.空节点和一个节点是对称的
2.只有左子树或者右子树的节点不是对称节点
3.父节点相同,左子树的左节点==右子树的右节点,
  左子树的右节点==右子树的左节点,这个也是对称节点。
  (备注:递归实现这些判断就可以。)

题目1:对称二叉树

https://leetcode-cn.com/problems/symmetric-tree/

代码实现:

代码语言:javascript
复制
/**
 * 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 check(root.Left,root.Right)
}
func check(l, r *TreeNode) bool {
    if l == nil && r == nil {
        return true
    }
    if l==nil || r ==nil {
        return false
    }
    return l.Val == r.Val && check(l.Left,r.Right) && check(l.Right,r.Left)
}
// 算法:镜像的概念,L树的左子树与R树的右子树相同,L树的右子树与R树的左子树相同

执行结果:

小结:对称二叉树算是树操作的一种经典题目,对于这种题目的解法,递归是一种很好的方式,算是基本题型之一,是一定要掌握的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 灰子学技术 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

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