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

代码随想录day15二叉树3

文章目录

  • 222.完全二叉树的节点个数
  • 110.平衡二叉树
  • 257. 二叉树的所有路径
  • 404.左叶子之和

222.完全二叉树的节点个数

题目链接
文章讲解

/*** 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 countNodes(TreeNode* root) {queue<TreeNode*> q;if(root) q.push(root);vector<int> res;int ans=0;while(!q.empty()){int k=q.size();ans+=k;while(k--){TreeNode* node=q.front();q.pop();if(node->left) q.push(node->left);if(node->right) q.push(node->right);}}return ans;}
};

110.平衡二叉树

题目链接
文章讲解

/*** 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 solve(TreeNode* cur){if(cur==NULL) return 0;int left=solve(cur->left);if(left==-1) return -1;int right=solve(cur->right);if(right==-1) return -1;if(abs(left-right)>1) return -1;else return max(left,right)+1;}bool isBalanced(TreeNode* root) {if(solve(root)==-1) return false;else return true;}
};

257. 二叉树的所有路径

题目链接
文章讲解

/*** 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 {
private:void traversal(TreeNode* cur, string path, vector<string>& result) {path += to_string(cur->val); // 中if (cur->left == NULL && cur->right == NULL) {result.push_back(path);return;}if (cur->left) traversal(cur->left, path + "->", result); // 左if (cur->right) traversal(cur->right, path + "->", result); // 右}public:vector<string> binaryTreePaths(TreeNode* root) {vector<string> result;string path;if (root == NULL) return result;traversal(root, path, result);return result;}
};

404.左叶子之和

题目链接
文章讲解

/*** 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 sumOfLeftLeaves(TreeNode* root) {if(root->left==NULL&&root->right==NULL) return 0;queue<TreeNode*> q;if(root) q.push(root);vector<int> res;int ans=0;while(!q.empty()){int k=q.size();for(int i=1;i<=k;i++){TreeNode* node=q.front();q.pop();if(node->left) if(node->left->left==NULL&&node->left->right==NULL) ans+=node->left->val; else q.push(node->left);if(node->right) q.push(node->right);}}return ans;}
};

相关文章:

  • 白山网站建设关键词如何确定
  • 如何查看网站ftp地址2345网址导航下载桌面
  • 可以用足球做的游戏视频网站知乎推广合作
  • wordpress mate上海网站seo排名优化
  • 中山企业建站程序佛山外贸seo
  • 台州网站建设咨询nba今日最新消息
  • 获取YARN application 应用列表的几种方法
  • 博图运动控制入门篇1-伺服组态和基本设置
  • Windows 安装 Redis8.0.2
  • 逆序对的数量
  • python的少数民族音乐网站系统
  • JVM调优实战 Day 6:JVM性能监控工具实战
  • DICOM 协议中DIMSE-C 和 DIMSE‑N 功能
  • Windows10中设置多个虚拟IP方法
  • vue2 点击按钮高亮显示不同项,再次点击隐藏相同项
  • Java8 Stream流:Stream流的思想和获取Stream流
  • 【AI】Manus自主产品原型设计
  • Python函数
  • ubuntu中53端口被占用导致dnsmasq无法使用。已解决。
  • GO 语言学习 之 运算符号
  • 自动化测试工具Katalon 之核心概念全解析
  • 浙大/浙工大合作iMeta(1区 | IF 33.2):单微生物RNA-seq + 聚类解析肠道关键种代谢功能
  • 自动化测试--App自动化之项目实战脚本编写及封装流程
  • 【MCP 实战4-1】开发 OpenSearch MCP server
  • 微信小程序中scss、ts、wxml
  • 开源代码修复新标杆——月之暗面最新开源编程模型Kimi-Dev-72B本地部署教程,自博弈修复 Bug