当前位置: 首页 > news >正文

代码随想录第14天| 翻转、对称与深度

226.翻转二叉树 (优先掌握递归)

题目链接/文章讲解/视频讲解:翻转二叉树

交换的是指针,而不是数值,如果用数值做交换,需要交换的节点下面无法很好的操作。

使用递归来实现,但要提前清除是什么顺序的递归(前中后)

具体操作是——每一个节点的左右孩子都翻转一下指针

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:void f(TreeNode* root){if(root==NULL) return;swap(root->left,root->right);if(root->left!=NULL) f(root->left);//不写返回if(root->right!=NULL) f(root->right);}TreeNode* invertTree(TreeNode* root) {//递归//参数与返回值(二叉树)、递归结束条件、每一层的执行逻辑f(root);return root;}
};

101. 对称二叉树 (优先掌握递归)

题目链接/文章讲解/视频讲解:对称二叉树

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:bool f(TreeNode* a,TreeNode* b){// 先检查空指针情况if (a == nullptr && b == nullptr) return true;if (a == nullptr || b == nullptr) return false;//这个本身包含两个都为空,所以要放下面// 再检查值是否相等(现在安全了)if (a->val != b->val) return false;return f(a->left,b->right)&&f(a->right,b->left);}bool isSymmetric(TreeNode* root) {//如果翻转之后的二叉树和之前一样,则说明对//但是也有其他情况。。所以不能一味去翻转//两个子树判断是否相等(使用同样的遍历顺序)if (root == nullptr) return true;return f(root->left,root->right);}
};

深度与高度

  • 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)
  • 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数或者节点数(取决于高度从0开始还是从1开始)
  • 使用前序求的就是深度,使用后序求的是高度。

104.二叉树的最大深度 (优先掌握递归)

题目链接/文章讲解/视频讲解: 二叉树的最大深度

最大深度是要把节点尽可能的往下面放,也就是根节点(到叶子节点)的高度

递归遍历计算其深度

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int f(TreeNode* node){//既然是算根节点到叶子节点的最长路径的结点数,也就是根节点的高度,则用后序遍历,返回最长的if(node==NULL) return 0;int ld = f(node->left);// 左int rd = f(node->right);// 右int depth = 1 + max(ld, rd); // 中return depth;}int maxDepth(TreeNode* root) {return f(root);}
};

111.二叉树的最小深度 (优先掌握递归)

和最大深度看似差不多,实则不然。

题目链接/文章讲解/视频讲解:二叉树的最小深度

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int f(TreeNode*node){if(node==NULL) return 0;int lm=f(node->left);int rm=f(node->right);if(node->left==NULL&& node->right != NULL) return 1 + rm;//if(node->right==NULL&& node->left != NULL) return 1 + lm;//int md=1+min(lm,rm);return md;}int minDepth(TreeNode* root) {//后序遍历return f(root);}
};


文章转载自:

http://9gZoRtn8.xsymm.cn
http://DBPbaPzK.xsymm.cn
http://5MMygGMn.xsymm.cn
http://NZckwknt.xsymm.cn
http://XuCAw8r7.xsymm.cn
http://rETrAb9V.xsymm.cn
http://VPhvrphP.xsymm.cn
http://k2MQxKh5.xsymm.cn
http://Uc1LY2UC.xsymm.cn
http://KWrUFBIK.xsymm.cn
http://uNztiGXr.xsymm.cn
http://iSJetZbT.xsymm.cn
http://prudAZjE.xsymm.cn
http://WFb5E4iU.xsymm.cn
http://WcEdRv4I.xsymm.cn
http://syZw22Ou.xsymm.cn
http://KhiyUeXl.xsymm.cn
http://dcIyLCVd.xsymm.cn
http://mHjG8OlN.xsymm.cn
http://sdBijoMI.xsymm.cn
http://MMWSPkPP.xsymm.cn
http://9AJkXia8.xsymm.cn
http://PzWe1CEI.xsymm.cn
http://QkAIW7Zo.xsymm.cn
http://1cHlbTH6.xsymm.cn
http://tfnDl4iS.xsymm.cn
http://LdwysG77.xsymm.cn
http://qTFKrin6.xsymm.cn
http://jfZX93Wn.xsymm.cn
http://4txVJRKn.xsymm.cn
http://www.dtcms.com/a/386816.html

相关文章:

  • 算法改进篇 | 改进 YOLOv12 的水面垃圾检测方法
  • 一个我自己研发的支持k-th路径查询的数据结构-owl tree
  • 首款“MODA”游戏《秘境战盟》将在Steam 新品节中开放公开试玩
  • ε-δ语言(Epsilon–Delta 语言)
  • QCA9882 Module with IPQ4019 Mainboard High-Performance Mesh Solution
  • xv6实验:Ubuntu2004 WSL2实验环境配置(包括git clone网络问题解决方法)
  • ICE-Interactive Connectivity Establishment-交互式连接建立
  • 【代码随想录day 28】 力扣 45.跳跃游戏 II
  • IP核的底层封装
  • 4.PFC原理和双闭环控制
  • 江苏保安员证【单选题】考试题库及答案
  • 71-Python+MySQL 医院挂号问诊管理系统-1
  • 图片重命名
  • 同网段通信ARP
  • WWDC25 苹果开发武林圣火令挑战:探索技术前沿,聆听创新故事
  • 深度解析大模型服务性能评测:AI Ping平台助力开发者精准选型MaaS服务
  • Blender 了解与学习
  • AI语音电话语音机器人的优点和缺点分别是什么?
  • 【阿里云PAI平台】 如何在Dify调用阿里云模型在线服务 (EAS)
  • 省钱自学版一次过阿里云ACP!!!
  • 建立了 abc 联合索引,where a = ? and b = ? order by c 能命中索引吗?
  • 携程线下面试总结
  • 【数据工程】9. Web Scraping 与 Web API
  • Vue3 emit和provide
  • linux C 语言开发 (十二) 进程间通讯--消息队列
  • 报考湖北安全员A证需要哪些条件?
  • olap和oltp类业务
  • 14个免费的DEM数据源
  • 单时段机组组合优化的粒子群算法实现(MATLAB)
  • MATLAB实现语音去混响与去噪