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

【算法刷题day16】Leetcode:104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数

104.二叉树的最大深度 (优先掌握递归)

文档链接:[代码随想录]
题目链接:104.二叉树的最大深度 (优先掌握递归)
状态:ok

题目:
给定一个二叉树 root ,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
注意:
1.暂时只看了递归的方法没有看迭代法
2.后序遍历会比前序遍历简单

class Solution {
public:int maxDepth(TreeNode* root) {int max = getDepth(root);return max;}int getDepth(TreeNode* root){if(root == NULL)return 0;int leftDepth = getDepth(root -> left);int rightDepth = getDepth(root -> right);int maxDepth = 1 + max(leftDepth, rightDepth);return maxDepth;}
};
class solution {
public:int result;void getdepth(TreeNode* node, int depth) {result = depth > result ? depth : result; // 中if (node->left == NULL && node->right == NULL) return ;if (node->left) { // 左depth++;    // 深度+1getdepth(node->left, depth);depth--;    // 回溯,深度-1}if (node->right) { // 右depth++;    // 深度+1getdepth(node->right, depth);depth--;    // 回溯,深度-1}return ;}int maxDepth(TreeNode* root) {result = 0;if (root == NULL) return result;getdepth(root, 1);return result;}
};

559.n叉树的最大深度

题目链接:559.n叉树的最大深度


class Solution {
public:int maxDepth(Node* root) {if(root == NULL)return 0;int depth = 0;for(int i = 0; i < root -> children.size(); i++){depth = max(depth, maxDepth(root -> children[i]));}return depth + 1;}
};

111.二叉树的最小深度

文档链接:[代码随想录]
题目链接:111.二叉树的最小深度
状态:ok

题目:
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明:叶子节点是指没有子节点的节点。
注意:
两边的子树分开求最小值

class Solution {
public:int minDepth(TreeNode* root) {return min(root);}int min(TreeNode* root){if(root == NULL) return 0;int leftDepth = min(root -> left);int rightDepth = min(root -> right);if(root -> left == NULL && root -> right != NULL){return 1 + rightDepth;}if(root -> right == NULL && root -> left != NULL){return 1 + leftDepth;}int result = 1 + std::min(leftDepth, rightDepth);return result;}
};

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

文档链接:[代码随想录]
题目链接:111.二叉树的最小深度
状态:ok

题目:
给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。
完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

class Solution {
public:int countNodes(TreeNode* root) {return count(root);}int count(TreeNode* node){if(node == NULL) return 0;int leftNum = count(node -> left);int rightNum = count(node -> right);int cou = leftNum + rightNum + 1;return cou;}
};

相关文章:

  • 微信小程序生命周期管理:从数据初始化到事件绑定
  • 【随笔】Git -- 高级命令(中篇)(七)
  • 【快速上手ESP32(基于ESP-IDFVSCode)】03-定时器
  • 数据结构 第六章(图)【上】
  • 使用docker-tc对host容器进行限流
  • Spring源码解析上
  • 机器学习模型——决策树
  • 【二分查找】Leetcode 二分查找
  • jdbc连SQL server,显示1433端口连接失败解决方法
  • 用html写一个爱心
  • 【随笔】Git -- 高级命令(上篇)(六)
  • Shell学习 - 2.24 Shell let命令:对整数进行数学运算
  • 力扣爆刷第111天之CodeTop100五连刷41-45
  • 【软件测试】测试常见知识点汇总
  • 一、持续集成介绍
  • 《Java编程思想》读书笔记-对象导论
  • 77. Combinations
  • CentOS 7 防火墙操作
  • express.js的介绍及使用
  • LeetCode29.两数相除 JavaScript
  • mysql外键的使用
  • Python实现BT种子转化为磁力链接【实战】
  • python学习笔记 - ThreadLocal
  • vue-router的history模式发布配置
  • 第2章 网络文档
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 马上搞懂 GeoJSON
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端设计模式
  • 前端之Sass/Scss实战笔记
  • PostgreSQL之连接数修改
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #AngularJS#$sce.trustAsResourceUrl
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (day 12)JavaScript学习笔记(数组3)
  • (MATLAB)第五章-矩阵运算
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (七)c52学习之旅-中断
  • (转) ns2/nam与nam实现相关的文件
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET 指南:抽象化实现的基类
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • []我的函数库
  • [20150629]简单的加密连接.txt
  • [8-27]正则表达式、扩展表达式以及相关实战
  • [android] 切换界面的通用处理
  • [Android]一个简单使用Handler做Timer的例子
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [C#][opencvsharp]opencvsharp sift和surf特征点匹配