C语言递归之对称二叉树
题目描述
给定一个二叉树,检查它是否是镜像对称的。
示例
二叉树 [1,2,2,3,4,4,3] 是对称的。
/ \
/ \ / \
[1,2,2,null,3,null,3] 则不是镜像对称的。
/ \
\ \
题目要求
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/ bool isSymmetric(struct TreeNode* root){ }
题解
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/ bool fun(struct TreeNode* r1,struct TreeNode* r2){
if(r1==NULL&&r2==NULL)return true;
if(r1==NULL||r2==NULL)return false;
if(r1->val!=r2->val)return false;
return fun(r1->left,r2->right)&fun(r1->right,r2->left);
} bool isSymmetric(struct TreeNode* root){
if(root==NULL)return true;
return fun(root->left,root->right);
}
题解
递归
递归的难点就在于想出要递归什么,经常情况是看了一下有那么点思路,但是一写就不会,真正想明白之后恍然大悟,还是要耐心思考。
对于此题,判断递归点就需要一步一步分析:
1.判断一棵树是不是对称二叉树,首先看根节点,根节点为空则true,根节点不为空则比较其左树和右树,左树右树对称时则为对称二叉树。
2.比较左树右树是否对称,首先需要左树的值和右树的值相等,其次需要左树的左子树与右树的右子树相等且左树的右子树与右树的左子树相等,否则不对称。
3.此时递归点就出现了,判断左树与右树是否对称的操作其实和判断左树的左子树与右树的右子树是否对称的操作相同。
4.这时就可以直接写代码了,fun(左树, 右树) = fun(左树的左子树, 右树的右子树) & fun(左树的右子树, 右树的左子树)。
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/symmetric-tree/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
C语言递归之对称二叉树的更多相关文章
- C语言递归之翻转二叉树
题目描述 翻转一棵二叉树. 示例 输入: / \ / \ / \ 输出: / \ / \ / \ 题目要求 /** * Definition for a binary tree node. * str ...
- Leecode刷题之旅-C语言/python-101对称二叉树
/* * @lc app=leetcode.cn id=101 lang=c * * [101] 对称二叉树 * * https://leetcode-cn.com/problems/symmetri ...
- LeetCode【101. 对称二叉树】
对称二叉树,就是左节点的左节点等于右节点的右节点,左节点的右节点等于右节点的左节点. 很自然就想到迭代与递归,可以创建一个新的函数,就是另一个函数不断的判断,返回在主函数. class Solutio ...
- 【leetcode-101】 对称二叉树
101. 对称二叉树 (1过) 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [ ...
- 【洛谷P5018】对称二叉树
题目大意:定义对称二叉树为每个节点的左右子树交换后与原二叉树仍同构的二叉树,求给定的二叉树的最大对称二叉子树的大小. 代码如下 #include <bits/stdc++.h> using ...
- LeetCode 101 对称二叉树的几种思路(Python实现)
对称二叉树 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \3 4 4 3 但是下面这个 [1,2,2 ...
- php实现求对称二叉树(先写思路,谋而后动)
php实现求对称二叉树(先写思路,谋而后动) 一.总结 1.先写思路,谋而后动 二.php实现求对称二叉树 题目描述: 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的 ...
- P5018 对称二叉树题解
题目内容链接: 那么根据题意,上图不是对称二叉树,只有节点7的子树是: 通俗来说,对称二叉树就是已一个节点x为根的子树有穿过x点的对称轴并且对称轴两边的对称点的大小也必须相等,那么这棵树就是对称二叉树 ...
- 洛谷P5018 对称二叉树
不多扯题目 直接题解= = 1.递归 由题目可以得知,子树既可以是根节点和叶节点组成,也可以是一个节点,题意中的对称二叉子树是必须由一个根节点一直到树的最底部所组成的树. 这样一来就简单了,我们很容易 ...
随机推荐
- H5项目 使用Cropper.js 实现图片 裁剪 操作 (APP端)
参考地址: 1.https://www.jianshu.com/p/b252a7cbcf0b 2.https://blog.csdn.net/weixin_38023551/article/detai ...
- Verilog写入变量值到文件语句
integer signed fid_out1,fid_out2; initial begin fid_out1 = $fopen("dataout_i.txt","w& ...
- [CTS2019]田野(80分)
loj嘟嘟嘟 学完模拟退火后开始搞这道题,搞了一下午最终搞到了80分,剩下的实在不知道怎么办了-- 首先肯定是把有交点的线段划分到一个集合,然后对每一个集合求一遍凸包. 然后两两合并,如果新的凸包的周 ...
- 一次router拦截器的应用
实现 退出登陆 无法回退到其它页面 当有登陆状态时 可以拿其它页面的地址直接访问 若没有登陆状态 拿其它页面的地址直接访问 会报错 router.beforeEach((to, from, n ...
- P4779 【模板】单源最短路径(标准版)题解
原题链接 https://www.luogu.org/problemnew/show/P4779 若还未食用弱化版的同学请先做这个qwq https://www.luogu.org/problemne ...
- NSObject和反射2
NSObject和反射2. commend +R run id stu=[Student student]; // –> Student *stu=[Student student]; : ...
- loj6519 魔力环
解题思路 考虑顺时针旋转 \(i\) 步得到的结果,根据Burnside引理,有 \[ Ans=\frac{\sum\limits_{i=0}^{n-1}C(i)}{n} \] \(C(i)\) 为旋 ...
- How to do Deep Learning on Graphs with Graph Convolutional Networks
翻译: How to do Deep Learning on Graphs with Graph Convolutional Networks 什么是图卷积网络 图卷积网络是一个在图上进行操作的神经网 ...
- 搬运 centos7.2 apache 绑定二级目录 访问依然是apache页面
<VirtualHost *:80>ServerName xx.comDocumentRoot /var/www/html/xx</VirtualHost>
- linux编辑文本(vim)时跳转到最后一行和第一行及相关指令
vi操作 1.跳到文本的最后一行:按“G”,即“shift+g” 2.跳到最后一行的最后一个字符 : 先重复1的操作即按“G”,之后按“$”键,即“shift+4”. 3.跳到第一行的第一个字符:先按 ...