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

代码随想录day16

513.找树左下角的值

//迭代法中左视图的最后一位

    int findBottomLeftValue(TreeNode* root) {int result = 0;queue<TreeNode*> qe;if(root == nullptr) return result;qe.push(root);vector<int> lefts;while(!qe.empty()){int sz = qe.size();vector<int> tmp;for(int i = 0; i < sz; i++){TreeNode* nd = qe.front();qe.pop();tmp.push_back(nd->val);if(nd->left) qe.push(nd->left);if(nd->right) qe.push(nd->right);}lefts.push_back(tmp[0]);}result = lefts[lefts.size()-1];return result;}

//递归法,保证左侧优先遍历,注意回溯

    int maxDepth = INT_MIN;int result;void traverse(TreeNode*node, int depth){if(node->left == nullptr && node->right == nullptr){if(depth > maxDepth){maxDepth = depth;result = node->val;}return;}if(node->left){traverse(node->left, depth+1);}if(node->right){traverse(node->right, depth+1);}return;}

111.路径总和

    bool traverse(TreeNode* node, int target){if(node->left == nullptr && node->right == nullptr){if(target == node->val){return true;}else{return false;}}if(node->left){if(traverse(node->left, target - node->val)){return true;}}if(node->right){if(traverse(node->right, target - node->val)){return true;}}return false;}bool hasPathSum(TreeNode* root, int targetSum) {if(root == nullptr) return false;return traverse(root, targetSum);}

113.路径之和ii

    vector<vector<int>> result;vector<int> path;void traverse(TreeNode* node, int target){if(node->left == nullptr && node->right == nullptr){if(target == node->val){path.push_back(node->val);result.push_back(path);path.pop_back();}return;}if(node->left){path.push_back(node->val);traverse(node->left, target - node->val);path.pop_back();}if(node->right){path.push_back(node->val);traverse(node->right, target - node->val);path.pop_back();}return;}vector<vector<int>> pathSum(TreeNode* root, int targetSum) {if(root == nullptr) return result;traverse(root, targetSum);return result;}

106.从中序与后序遍历序列构造二叉树,需二刷

需记住中序,后序分割后的左右子串数量一致

    TreeNode* traverse(vector<int>& inorder, vector<int>& postorder){if(inorder.size() == 0 || postorder.size() == 0){return nullptr;}int rootval = postorder[postorder.size()-1];TreeNode* root = new TreeNode(rootval);if(postorder.size() == 1){return root;}int dim = 0;for(int i = 0; i < inorder.size(); i++){if(inorder[i] == rootval){dim = i;}}vector<int> leftinorder(inorder.begin(), inorder.begin()+dim);vector<int> rightinorder(inorder.begin()+dim+1, inorder.end());postorder.resize(postorder.size()-1);vector<int> leftpostorder(postorder.begin(), postorder.begin()+leftinorder.size());vector<int> rightpostorder(postorder.begin()+leftinorder.size(), postorder.end());root->left = traverse(leftinorder, leftpostorder);root->right = traverse(rightinorder, rightpostorder);return root;}TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {if(inorder.size() == 0 || postorder.size() == 0){return nullptr;}return traverse(inorder, postorder);}

105.从前序与中序遍历序列构造二叉树

TreeNode* traverse(vector<int>& preorder, vector<int>& inorder){if(preorder.size() == 0 || inorder.size() == 0){return nullptr;}int rootval = preorder[0];TreeNode* root = new TreeNode(rootval);if(preorder.size() == 1){return root;}int dim = 0;for(;dim < inorder.size(); dim++){if(inorder[dim] == rootval){break;}}vector<int> leftinorder(inorder.begin(), inorder.begin()+dim);vector<int> rightinorder(inorder.begin()+dim+1, inorder.end());preorder.erase(preorder.begin());vector<int> leftpreorder(preorder.begin(),preorder.begin()+leftinorder.size());vector<int> rightpreorder(preorder.begin()+leftinorder.size(),preorder.end());root->left = traverse(leftpreorder, leftinorder);root->right = traverse(rightpreorder, rightinorder);return root;}TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {if(preorder.size() == 0 || inorder.size() == 0){return nullptr;}return traverse(preorder, inorder);}

http://www.lryc.cn/news/540019.html

相关文章:

  • 常见的软件测试模型及特点
  • tailwindcss学习01
  • C语言复杂度分析
  • DeepSeek服务器繁忙 多种方式继续优雅的使用它
  • Bootstrap Blazor UI 中 <Table> 组件 <TableColumn> 使用备忘01:EF Core 外码处理
  • 云原生数据抽象与弹性加速:Fluid开源系统的技术解析
  • 【Python爬虫(29)】爬虫数据生命线:质量评估与监控全解
  • VSCode AI提效工具,通义灵码前端开发体验
  • 在实时大数据处理中如何平衡延迟和吞吐量
  • 一款开源可独立部署的知识管理工具!!
  • 罗德与施瓦茨SMB100A,一款卓越的中档模拟射频/微波信号源
  • java毕业设计之医院门诊挂号系统(源码+文档)
  • 【Scrapy】Scrapy教程7——存储数据
  • QILSTE H4-108TCG/5M高亮翠绿光LED灯珠 发光二极管LED
  • Python中numpy.loadtxt()函数的用法
  • Windows系统安装GPU驱动/CUDA/cuDNN
  • nessus kali 卸载
  • 使用Geotools读取DEM地形数据实战-以湖南省30米数据为例
  • 基于WebGIS技术的校园地图导航系统架构与核心功能设计
  • 《养生方法》(一)
  • Python常见面试题的详解9
  • MAVSDK - Custom Mavlink处理
  • java每日精进 2.13 MySql迁移人大金仓
  • 【R语言】回归分析与判别分析
  • ES6中Object.defineProperty 的详细用法和使用场景以及例子
  • 揭秘云计算 | 5、关于云计算效率的讨论
  • 【Linux探索学习】第二十七弹——信号(上):Linux 信号基础详解
  • 如何查询网站是否被百度蜘蛛收录?
  • 什么是网络安全审计?网络安全审计的作用...
  • EasyExcel实现excel导入(模版上传)