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

代码随想录打卡第十二天

题目链接/文章讲解/视频讲解:代码随想录

这个题目不难,使用前序遍历的方法,对结点的处理是交换左右孩子。

/*** 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 traversal(TreeNode* node){if(node==NULL){return;}swap(node->left,node->right);traversal(node->left);  //左traversal(node->right); //右}TreeNode* invertTree(TreeNode* root) {traversal(root);return root;}
};

自己试了中序遍历发现不行,直接看的题解,题解给的很简单。

/*** 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 isSymmetric(TreeNode* root) {return root == nullptr || recur(root->left, root->right);}
private:bool recur(TreeNode* L, TreeNode* R) {if (L == nullptr && R == nullptr) //如果左右有同时为空 说明同时并且遍历到了叶子结点 此结点对称的 {return true;}if (L == nullptr || R == nullptr || L->val != R->val) //如果左右只有一个为空 说明不对陈 或者 左值不等于对称的右值{return false;}return recur(L->left, R->right) && recur(L->right, R->left);}
};

使用层序遍历,每次遍历单层就是深度+1,直到层序遍历完看深度是多少就行

/*** 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 maxDepth(TreeNode* root) {int depth=0;//存入结果的数组queue<TreeNode*> que;//存入结点的队列if(root!=NULL){que.push(root);//}while(!que.empty())//队列非空 说明队列中有结点{int size=que.size();//当前队列的所有元素个数,就是本层的节点数for(int i=0;i<size;i++){TreeNode* node=que.front();que.pop();if(node->left){que.push(node->left);}if(node->right){que.push(node->right);}}depth++;//遍历完一层就+1}return depth;}
};

 

此题目也是用层序遍历,处理过程是如果发现某个结点的左孩子和右孩子同时为NULL,那么就是第一次找到了叶子节点

/*** 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 minDepth(TreeNode* root) {int depth=0;//存入结果的数组queue<TreeNode*> que;//存入结点的队列if(root!=NULL){que.push(root);}while(!que.empty())//队列非空 说明队列中有结点{int size=que.size();//当前队列的所有元素个数,就是本层的节点数for(int i=0;i<size;i++){TreeNode* node=que.front();que.pop();if(node->left==NULL && node->right==NULL){return depth+1;}if(node->left){que.push(node->left);}if(node->right){que.push(node->right);}}depth++;//遍历完一层就+1}return depth;}

,直接返回深度+1,为什么+1,因为此层没有遍历完毕,多以手动+1; 

http://www.dtcms.com/a/284269.html

相关文章:

  • Unity | AmplifyShaderEditor插件基础(第十集:噪声的种类+火焰制作-下)
  • 透过结构看时间——若思考清洗则表达有力
  • 开源Agent平台Dify源码剖析系列(六)核心模块core/agent之CotCompletionAgentRunner
  • Web开发 01
  • Vue.js 的 Composition API 深度解析:构建高效可维护的前端逻辑
  • 让大模型输出更加规范化——指定插件
  • LVS部署DR模式集群
  • @Linux搭建DNS-主从服务器
  • Spring原理揭秘--Spring的AOP
  • cuda编程笔记(8)--线程束warp
  • Cookie 与 Session概述
  • AI编程实战:如何让AI生成带参数和返回值的Python函数——以PDF文本提取为例
  • 【橘子分布式】gRPC(理论篇)
  • 要实现在调用  driver.get()  后立即阻止页面自动跳转到 Azure 登录页,可通过以下几种方法实现:
  • Redis完全指南:从基础到实战(含缓存问题、布隆过滤器、持久化及Spring Boot集成)
  • 前端 cookie 使用
  • 独家|理想汽车放弃华为PBC模式,回归OKR理想汽车
  • 自动化测试工具 Selenium 入门指南
  • 大带宽服务器对于高流量网站的作用
  • Kubernetes v1.33:容器生命周期管理的重要演进
  • 断网情况下,网线直连 Windows 笔记本 和Ubuntu 服务器
  • python的抗洪救灾管理系统
  • 分布式系统中脑裂问题
  • 数据结构入门 (二):挣脱连续空间的束缚 —— 单向链表详解
  • LiteCloud超轻量级网盘项目基于Spring Boot
  • 大模型AI制作svg流程图过分简单粗糙单调的问题及修改调整方法
  • AI大模型教程 Langchain AI原生应用开发 Milvus AnythingLLM Dify 仿京东《京言》AI实战解析
  • 【赵渝强老师】Redis的主从复制集群
  • mongodb-org-server_8.0.11_amd64.deb 这个文件怎么安装
  • Java爬虫与正则表达式——用正则来爬取数据