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

NC 完全二叉树结点数

系列文章目录


文章目录

  • 系列文章目录
  • 前言


前言

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
在这里插入图片描述


描述
给定一棵完全二叉树的头节点head,返回这棵树的节点个数。

完全二叉树指:设二叉树的深度为h,则 [1,h-1] 层的节点数都满足在这里插入图片描述
在这里插入图片描述

class Solution {
public:int nodeNum(struct TreeNode* head) {if (!head) return 0; // 空树算0个// 计算左右孩子, 不用判空, 如果left或right为空, 函数返回0int lh = getHeight(head->left), rh = getHeight(head->right);int res = 1; // 根节点算1个if (lh == rh) {// (1<<lh) - 1 是左子树满二叉树的节点数, 右子树一定也是完全二叉树, 故递归计算res += nodeNum(head->right) + (1<<lh) - 1;} else {// 同上, 右子树一定是满二叉树res += nodeNum(head->left) + (1<<rh) - 1;}return res;}int getHeight(struct TreeNode* head) {int h = 0; // 初始高度是0while (head) {h++; // 当前节点存在, 高度加1head = head->left; // 向左走}return h;}
};
http://www.lryc.cn/news/429034.html

相关文章:

  • 点灯案例优化(二) 利用位运算修改特定位
  • 【C++备忘录】
  • java编程 斐波拉契数列算法集锦【斐波拉契数列】【下】【集合类】【Stream函数式编程】
  • 智慧园区三维可视化平台
  • Redis 有序集合【实现排行榜】
  • ORACLE数据库管理系统介绍
  • C# 中Linq探讨 Or条件拼接
  • 有关应用层面试题有关库的思维导体
  • 记一次 SAP BP 编号范围错误引发的一个问题 GET_NRIV_LINE
  • (17)ELK大型储存库的搭建
  • 每日一问:Kafka消息丢失与堆积问题分析(简化版)
  • C语言中函数sizeof和strlen区别
  • RAG与LLM原理及实践(14)---- Python + MinIO + Kafka进阶
  • 接口自动化-代码实现
  • 如何查看linux大文件
  • 生成式人工智能服务大模型备案答疑
  • QT-贪吃蛇小游戏
  • 虚幻5|AI视力系统,听力系统,预测系统(1)视力系统
  • IC rankIC
  • Windows服务器IIS7下如何查看真实报错原因
  • 深度学习设计模式之策略模式
  • Linux 下安装miniconda(少走弯路)
  • java ssl使用自定义证书
  • 【ARM+Codesys 客户案例 】基于RK3568/A40i/STM32+CODESYS开发的控制器在自动输送分拣系统上的应用,支持定制
  • C++ 设计模式(1. 单例模式)
  • 算法笔记|Day31动态规划IV
  • CSS文字方向控制属性text-orientation
  • 配置typora上传图片到Chevereto图床
  • Java面试八股之如何保证消息队列中消息不重复消费
  • 0.91寸OLED迷你音频频谱