尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

代码随想录Day15_二叉树

代码随想录Day15_二叉树
📅 发布时间:2026/6/19 22:52:13
代码随想录Day15_二叉树

1.平衡二叉树

题目理解:

左子树和右子树的高度差不超过1。
求左子树高度,求右子树高度,如果差1或者0就返回true.至于高度.
不能用求最大深度做,因为最大深度中高度的相加是通过最后1+max() 实现的.
image
题目理解错了,平衡二叉树,说的是所有节点的左子树和右子树的高度差,并非是根节点。在看对称二叉树时,判断的是根节点的左右子树的情况。因此参数一定是节点。

题目思路

不懂为什么要引出高度和深度以及遍历方式?
先三部曲:
1.参数是节点,返回值是高度,int;
2.终止条件:节点空
3.单层循环的逻辑:左右子树的差值。

代码实现

class Solution {
public:bool isBalanced(TreeNode* root) {return GetHi(root)==-1? false:true;}int GetHi(TreeNode* node){if(node==NULL)   return 0;int leftH = GetHi(node->left);int rightH = GetHi(node->right);if(leftH == -1)  return -1;if(rightH == -1)  return -1;return abs(rightH-leftH)>1? -1:1+max(rightH,leftH);}

2.二叉树的所有路径

题目理解

根节点到叶子经过的所有节点。

思路

对于一个节点,要是有左节点,就输出来,要是有右节点就输出来,直到没有左节点,也没有右节点。用动态数组存。

代码

class Solution {
public:vector<string> binaryTreePaths(TreeNode* root) {vector<int>path;vector<string>result;if(root ==NULL) return result;Tranverse(root,path,result);return result;}
private:void Tranverse(TreeNode* node,vector<int>&path,vector<string> &result){path.push_back(node->val);if(node->left==NULL&&node->right==NULL){string spath;for(int i=0;i<path.size()-1;i++){spath += to_string(path[i]); spath +="->";}spath+=to_string(path[path.size()-1]);result.push_back(spath);//return ;}if(node->left){Tranverse(node->left,path,result);path.pop_back();}if(node->right){Tranverse(node->right,path,result);path.pop_back();}}
};

3.左叶子之和

题目理解

是左叶子!是没有孩子的节点,不是左节点!
叶子节点:如果已经遍历到了叶子节点,那么就不知道它是否是左节点,因此参数是叶子节点的上一个节点。

思路

1.参数 TreeNode node 返回值 int;
2.终止条件:root==NULL;
3.单层循环:遇见左叶子,记录左叶子;

  • 递归求左子树叶子和;
  • 递归求右子树叶子和;
  • 返回和。

代码

class Solution {
public:int sumOfLeftLeaves(TreeNode* root) {return tranverse(root);}int tranverse(TreeNode* node){if(node == NULL) return 0;int leftNum =tranverse(node->left);if(node->left!=0&&node->left->left==NULL&&node->left->right==NULL)leftNum+=node->left->val;//左int rightNum =tranverse(node->right);//右int sum =leftNum+rightNum;//中return sum;}};

3.完全二叉树节点的数量

题目理解

思路

这个递归真是完全不理解,为什么要确定一个终止条件后还要再写一个判断满二叉树,满二叉树是为了简化。

代码

class Solution {
public:int countNodes(TreeNode* root) { return GetNum(root); }
private:int GetNum(TreeNode* node) {if (node == NULL)return 0;int leftDepth = 0;int rightDepth = 0;TreeNode* LeftNode=node->left;while (LeftNode) {LeftNode = LeftNode->left;leftDepth++;}TreeNode* RightNode = node->right;while (RightNode) {RightNode = RightNode->right;rightDepth++;}if(leftDepth == rightDepth) {return (2<<leftDepth)-1;}int leftNum = GetNum(node->left);int rightNum = GetNum(node->right);int sum = leftNum + rightNum+1;return sum;}
};

相关新闻

  • 什么是代币?从ERC-20开始 - all-in
  • Yanhua Mini ACDP-2 BMW CAS Package: Advanced CAS ISN Module Programming for N20/N55/B38
  • 发布与订阅者模式-复盘

最新新闻

  • 2026昆山建筑修缮行业全景分析:昆山鼎壹万防水补漏公司及本地适配服务商深度指南 专业防水公司排名推荐(2026年6月防水补漏最新TOP权威排名) - 鼎壹万修缮说
  • 六安7年烘焙老店|三个叔叔手工吐司文庙街店:用心做好每一款生日蛋糕 - 速递信息
  • 2026合肥防水补漏权威指南:卫生间/屋面/外墙/地下室正规施工+透明报价+避坑全攻略 - 苏易修缮
  • 爱回收买iPad靠谱吗?质检与售后逐项看 - 新闻快传
  • 二手平台哪个更靠谱?从质检、价格到隐私,一份不踩坑的选择框架 - 新闻快传
  • 抢占AI搜索新入口:杭州爱搜索GEO的AI搜索优化实战方法论与标杆案例解析 - 品牌报告

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号