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

补卡day16

513. 找树左下角的值 - 力扣(LeetCode)

class Solution {
public:int findBottomLeftValue(TreeNode* root) {queue<TreeNode*> qu;//  if(root == nullptr) return;TreeNode* node = nullptr;qu.push(root);while(!qu.empty()){int n = qu.size();while(n--){node = qu.front();qu.pop();if(node->right) qu.push(node->right);if(node->left) qu.push(node->left);}}return node->val; // 最后一个节点就是左下角的节点}
};

112. 路径总和 - 力扣(LeetCode)

class Solution {
public:bool hasPathSum(TreeNode* root, int targetSum) {if(root == nullptr) return false;targetSum -= root->val;// 如果现在已经是叶子节点了if(root->left == nullptr && root->right == nullptr){if(targetSum == 0){return true;}else{return false;}}return hasPathSum(root->left, targetSum) || hasPathSum(root->right, targetSum);}
};

113. 路径总和 II - 力扣(LeetCode)

class Solution {
private:void dfs(TreeNode* node, int targetSum, vector<int> &path, vector<vector<int>>& res){if(node == nullptr) return;targetSum -= node->val;path.push_back(node->val);if(node->left == nullptr && node->right == nullptr){if(targetSum == 0){res.push_back(path); //共同使用一个path, 所以这里不能返回path.pop_back();return;}}dfs(node->left,targetSum,path,res);dfs(node->right,targetSum,path,res);path.pop_back();}
public:vector<vector<int>> pathSum(TreeNode* root, int targetSum) {vector<int> path;vector<vector<int>> res;dfs(root,targetSum,path,res);return res;}
};

106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode)

class Solution {
public:TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {if(postorder.empty()) return nullptr;// 空节点auto it = find(inorder.begin(), inorder.end(),postorder.back());int size = it - inorder.begin() ;vector<int> in1(inorder.begin(), inorder.begin() + size);//左子树的中序vector<int> in2(inorder.begin() + size + 1, inorder.end());// 右子树的中序vector<int> post1(postorder.begin(), postorder.begin() + size);//左子树的后序vector<int> post2(postorder.begin() + size, postorder.end() - 1);TreeNode* left = buildTree(in1, post1);TreeNode* right = buildTree(in2, post2);return new TreeNode(postorder.back(), left, right);}
};

105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)

class Solution {
public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {if(preorder.empty()) return nullptr;auto it = find(inorder.begin(), inorder.end(), preorder.front());int size =  it - inorder.begin() ; // 左子树的大小vector<int> pre1(preorder.begin() + 1, preorder.begin() + size + 1); // 左子树的先序vector<int> pre2(preorder.begin() + size + 1, preorder.end());// 右子树的先序vector<int> in1(inorder.begin(), inorder.begin() + size);// 左子树的中序vector<int> in2(inorder.begin() + size + 1, inorder.end());TreeNode* left = buildTree(pre1, in1);TreeNode* right = buildTree(pre2, in2);return new TreeNode(preorder.front(), left, right);}
};

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

相关文章:

  • special topic 8 (2) and topic 9 (1)
  • 亚麻云之全球加速器——CloudFront(CDN)服务入门
  • 系统测试讲解 - Java使用selenium实现滑块验证的处理详解
  • 关于linux操作系统下的文件操作方法:
  • 深度解析1688关键字搜索API接口:技术实现与应用探索
  • 【Nginx知识】nginx日志配置详解
  • 使用线性降维方法进行数据降维
  • token危机解决?扩散模型数据潜力3倍于自回归,重训480次性能仍攀升
  • Java历代JDK核心特性演进(JDK9-21精华版)
  • 【Docker实战入门】从核心概念到镜像构建
  • 微服务架构中过滤器(Filter)与拦截器(Interceptor)的区别
  • 线程池111
  • Spring Boot - 内置的9个过滤器用法
  • 串联所有单词的子串
  • 【力扣198】打家劫舍
  • Windows选择文件自动删除及输入框自动打字的解决办法
  • 当varchar和Nvarchar关联
  • 6A 工作流:让 Cursor、Trae 等AI编程助手按流程交付的实战手册
  • Java 基础编程案例:从输入交互到逻辑处理
  • 基于django的宠物用品购物商城的设计与实现
  • [创业之路-540]:经营分析会 - 如何实现销售0到1营收的突破
  • 从DDPM对比学习Diffusion Policy:生成模型到策略学习的演进
  • Spring Boot 开发三板斧:POM 依赖、注解与配置管理
  • 字节:计算机存储单位
  • 计算机视觉实战:用YOLO打造智能停车场空位雷达
  • 线程互斥与锁机制详解
  • 【模板】拓扑排序
  • 性能解析案例
  • 人工智能与体育:体育产业的革新
  • Vue3从入门到精通: 2.5 Vue3组件库开发与设计系统构建