首页 > 其他分享 >101. 对称二叉树

101. 对称二叉树

时间:2024-04-06 17:05:34浏览次数:25  
标签:Rroot TreeNode struct Lroot return 二叉树 对称 101 节点

兄弟们今天又来刷题了,题目:. - 力扣(LeetCode)

刚开始看到这个题其实就觉得和那个判断二叉树是否相等的题很相似,于是就照着那题的思路想,可是后来发现此题给的接口函数只有一个参数,没办法写,于是我们可以自己写一个接口函数来完成。

思路:我们可以将这棵树看成把根节点删除的左右两棵树,题目保证了一定会有一个节点,所以我们就直接从它的左右孩子下手直接将他的孩子传给我们的接口函数,然后开始递归调用,此处需要注意的是因为我们是用相等二叉树的思路,但此处是对称二叉树,所以在递归调用的时候当往下一层递归时左边的树传左孩子时右边的树应该传右孩子,传右孩子时右边的树应该传左孩子,因为我们要的是满足对称

递归的返回条件有三个:1.当子节点为空时,有两种情况,一是只有一个根节点时此树仍是对称返回true,

二是当左右两树分别访问完它们的左子树和右子树时,没有发现不相等返回true。

2.因为已经把两个子节点都为空排除了,所以接下来只用关心两树是否对称,当两棵树子节点一个为空一个不为空时两树不对称返回false。

3.最后一个返回条件就是两树节点都不为空时,则进行值的比较若不等则返回false。

最后加上递归语句左树调左(右)孩子右树调右(左)孩子,大功告成!

附上代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool isSY(struct TreeNode* Lroot,struct TreeNode* Rroot){
    if(Lroot==NULL&&Rroot==NULL){
        return true;
    }
    if(Lroot==NULL||Rroot==NULL){
        return false;
    }
    if(Lroot->val!=Rroot->val){
        return false;
    }
    return isSY(Lroot->left,Rroot->right)&&isSY(Lroot->right,Rroot->left);
}
bool isSymmetric(struct TreeNode* root) {
    return isSY(root->left,root->right);
}

标签:Rroot,TreeNode,struct,Lroot,return,二叉树,对称,101,节点
From: https://blog.csdn.net/m0_74085682/article/details/137430829

相关文章

  • 二叉树-递归遍历
    深度优先遍历先往深走,遇到叶子结点再往回走,分为前序遍历,中序遍历和后序遍历。方法有递归法和迭代法。前中后序遍历,指的是中间节点的遍历顺序。前序遍历:5412678中左右中序遍历:1425768左中右后序遍历:1247865左右中深度优先遍历可利用递归法或者迭代法实......
  • 16天【代码随想录算法训练营34期】第六章 二叉树part03(● 104.二叉树的最大深度 559
    104.二叉树的最大深度#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defmaxDepth(self,root:O......
  • linux - GPG 非对称加密工具
    GNUPrivacyGuard(GPG)是一种主要设计用于使用公钥加密技术对数据进行加密和签名的工具。然而,它还包含仅使用用户提供的密码来加密数据的能力,并且支持多种加密算法。1.查看gpg支持的算法gpg--version2.生成密钥#使用默认选择gpg--generate-key#更灵活的算法选择g......
  • LC 226.翻转二叉树
    226.翻转二叉树给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例2:输入:root=[2,1,3]输出:[2,3,1]示例3:输入:root=[]输出:[]提示:树中节点数目范围在[0,100]内......
  • 代码随想录算法训练营DAY18|C++二叉树Part.5|513.找树左下角的值、112. 路径总和、113
    文章目录513.找树左下角的值层序-迭代遍历前中后序-递归遍历思路伪代码CPP代码112.路径总和、113.路径总和II112.路径总和思路伪代码实现CPP代码113.路径总和II思路伪代码实现CPP代码实现106\105.从中(前)序与后(中)序遍历序列构造二叉树106.从中序与后序遍历序列......
  • LG_P10183 [YDOI R1] Running 题解
    首先感谢@jjh20100730dalao提供的思路。这是一道一道简单的数学题。首先不难发现,起始时间为\(0\),那么到达每一个超市时的时间必须要能被\(v\)整除,注意到题目要求最大,所以是要求\(a_i\)的最大公因数。注意到到达每个超市的时间必须要是偶数,这样的话不满足\(v\)是最大......
  • 数据结构 第五章(树和二叉树)【下】
    写在前面:本系列笔记主要以《数据结构(C语言版)》为参考(本章部分图片以及知识点整理来源于王道),结合下方视频教程对数据结构的相关知识点进行梳理。所有代码块使用的都是C语言,如有错误欢迎指出。视频链接:第01周a--前言_哔哩哔哩_bilibili哈夫曼树部分的代码参考了一位小伙伴分享的......
  • 数据结构:二叉搜索树、平衡二叉树(AVL树)、红黑树、B树、B+树
    个人理解浅谈数据结构,应对八股文面试目录前言一、二叉搜索树(二叉排序树、二叉查找树、AVL树)(1)二叉树的特点:(2)二叉树的优缺点二、平衡二叉树(高度平衡树,最早的自平衡二叉树)(1)平衡二叉树的特点:(2)平衡二叉树的优缺点三、红黑树(1)红黑树的特点(2)红黑树的优缺点四、红黑树......
  • 数据结构:详解【树和二叉树】
    1.树的概念及结构(了解)1.1树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。1.2树的结构1.3树与非树:1.4树在实际中的运用(表示文件系统的目录树结构)2.......
  • DSL - Wire 实现-ApiHug101
      ......