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

代码随想录算法训练营第十六天-二叉树-513.找树左下角的值

  • 左下角不是以为的左下角,而最后一层最左侧的节点
  • 也是就是说一个右叶子节点,也可能是最左下角,当然是在其左侧再无其它同级节点
  • 看视频讲解使用的递归与回溯方法,自己是完全想不到的,对这道题解法完全是脑袋空空
#include <iostream>
#include <climits>
#include <sstream>
#define LEN 10009struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(): val(0), left(nullptr), right(nullptr) {}TreeNode(int v): val(v), left(nullptr), right(nullptr) {}TreeNode(int v, TreeNode* l, TreeNode* r): val(v), left(l), right(r) {}
};class Solution {
private:int max_depth = INT_MIN;int bottomLeftValue;
public:TreeNode* getTree() {// TreeNode* tnArr[] = new TreeNode*[LEN];TreeNode* tnArr[LEN] {nullptr};std::string str_content;std::getline(std::cin, str_content);std::stringstream ss {str_content};for (int index = 0; ss >> str_content; ++index) {if (str_content != "null")tnArr[index] = new TreeNode(stoi(str_content));elsetnArr[index] = nullptr;if (index > 0) {if (index % 2 == 1)tnArr[index / 2]->left = tnArr[index];elsetnArr[(index - 1) / 2]->right = tnArr[index];}}return tnArr[0];}void traversal(TreeNode* node, int depth) {if (node->left == nullptr && node->right == nullptr) {if (depth > max_depth) {max_depth = depth;bottomLeftValue = node->val;}}if (node->left)traversal(node->left, depth + 1);if (node->right)traversal(node->right, depth + 1);}int findBottomLeftValue(TreeNode* node) {traversal(node, 1);return bottomLeftValue;}
};
int main()
{Solution s;TreeNode* root = s.getTree();std::cout << "******" << std::endl;std::cout << s.findBottomLeftValue(root) << std::endl;return 0;
}
  • 发现getTree()函数中有bug,如果不是完全二叉树的话,其中一个节点如果有两层空的话,代码在给这个空赋值会引起空指针异常

  • 这个问题的原因就是构造树的代码考虑得不完善,只能等等,有时间再改改,或者看老师应该有更好构造树的代码

  • 汇总


http://www.mrgr.cn/news/81742.html

相关文章:

  • 《机器学习》——利用OpenCV库中的KNN算法进行图像识别
  • IPD管理体系框架架应用实践
  • GFPS扩展技术原理(十)-FMDN Notification
  • 【测试】接口测试
  • 使用 Spring Boot 实现文件上传:从配置文件中动态读取上传路径
  • 计算机体系结构期末复习1:分支预测
  • 本地部署 LLaMA-Factory
  • Rectified Flow 原理简介与示例代码解读
  • provider-10000模块、consumer-80[RestTemplate远程调用]
  • Java编程规约:命名风格
  • C++第五六单元测试
  • Java - 日志体系_Apache Commons Logging(JCL)日志接口库
  • sqlserver 数据库误删-用mdf和ldf文件恢复
  • C# 窗体应用程序嵌套web网页(基于谷歌浏览器内核)
  • 获取页面上所有的img,并保存到本地
  • 3.微服务灰度发布落地实践(组件灰度增强)
  • CY系统环境部署说明
  • 工作流审批流程的一些概念
  • 广义线性模型(GLM)全面解析
  • Ribbon、Nacos