Java解决完全二叉树的节点个数

Java解决完全二叉树的节点个数

01 题目

  • 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

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

    示例 1:

    在这里插入图片描述

    输入:root = [1,2,3,4,5,6]
    输出:6
    

    示例 2:

    输入:root = []
    输出:0
    

    示例 3:

    输入:root = [1]
    输出:1
    

    提示:

    • 树中节点的数目范围是[0, 5 * 104]
    • 0 <= Node.val <= 5 * 104
    • 题目数据保证输入的树是 完全二叉树

02 知识点

  • 二叉树
  • 优先深度搜索
  • 剪枝

03 我的题解思路

public class countNodes {
//	几个常用二叉树函数root.val当前节点值,root.left二叉树左节点,root.right二叉树右节点public static int countNodes(TreeNode root) {if(root==null) {//判断当前节点,为空返回0return 0;}//判断左节点是否为空,为空返回当前节点值1(题设优先左节点,无左节点也就没右节点),不为空继续递归(简单理解为利用函数循环)if(root.left==null) {return 1;}else {countNodes(root.left);}if(root.left!=null) {//判断右节点是否为空,不为空递归,为空,不继续遍历countNodes(root.right);}return 1+countNodes(root.left)+countNodes(root.right);}
//	 二叉树public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val = val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/751445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1990-2022年各省全要素生产率数据(仅结果)

1990-2022年各省全要素生产率数据&#xff08;仅结果&#xff09; 1、时间&#xff1a;1990-2022年 2、指标&#xff1a;地区、年份、OLS、FE、RE、DGMM、SGMM、SFA1、SFA2、SFA3、SFA3D、TFE、非参数法 3、范围&#xff1a;31省 4、计算说明&#xff1a; 产出指标&#x…

【自动化测试】如何在jenkins中搭建allure

相信大家在做自动化测试过程中&#xff0c;都会用到自动化测试环境&#xff0c;目前最常见的就是通过容器化方式部署自动化测试环境&#xff0c;但对于一些测试小白&#xff0c;不是很会搭建持续集成环境&#xff0c;特别是从0-1的过程&#xff0c;需要自行搭建很多依赖环境&am…

奇数乘积(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i 1;int j 3;//循环运算&#xff1b;while (j < 12){//运算&#xff1b;i i * j;//改变数值&#xff1b;j 2…

【2024-03-17】滴滴春招笔试两道编程题解

恭喜发现宝藏!搜索公众号【TechGuide】回复公司名,解锁更多新鲜好文和互联网大厂的笔经面经。 作者@TechGuide【全网同名】 订阅专栏: 【专享版】2024最新大厂笔试真题解析,错过必后悔的宝藏资源! 第一题:陨石坠落打击 题目描述 小盖正在模拟陨石对地质的危害。在小盖…

rt-thread之通讯协议modbus软件包的使用记录(lwip+modbus组合)

前言 使用freemodbus软件包使用网口通讯(sallwip)ip地址使用dhcp动态获取 软件包 相关宏定义 /*-----------------------------------------NET 宏定义-------------------------------------------*/#define RT_USING_SAL #define SAL_INTERNET_CHECK /* Docking with prot…

JavaScript内置对象

JavaScript内置对象 1.字符串对象 var s"abcdef";console.log(s.length);console.log(s.charAt(2));console.log(s.indexOf("c"));console.log(s.substring(0,4)); //substring(开始位置&#xff0c;结束位置) abcdconsole.log(s.substr(2,4)); //sub…

vue3依赖注入(provide 和 inject)

依赖注入&#xff08;provide 和 inject&#xff09;&#xff0c;解决Prop 逐级透传问题。跨多组件转递参数&#xff0c;避免使用Prop 逐级透传。 1. 父组件要为组件后代提供数据&#xff0c;需要使用到 provide() 函数&#xff1a; <script setup> import { provide,re…

前端框架vue的样式操作,以及vue提供的属性功能应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

【Linux】环境基础开发工具使用

目录 Linux软件管理器 yum 1.什么是软件包 2.查看软件包 3安装与卸载 vim-Linux编辑器 1.vim基础概念 2.vim的基础操作 命令模式基本操作 底层模式基本操作 3、其它模式 Linux编译器 gcc/g 1.如何进行编译 2.编译的四个过程 预处理(-E) 编译(-S) 汇编(-c) 链接…

python二级备考(2)-简单应用题

第1套 使用turtle库的turtle. right()函数和turtle.fd()函数绘制一个菱形&#xff0c;边长为200像素&#xff0c;4个内角度数为2个60度和2个120度 键盘输入一组人员的姓名、性别、年龄等信息&#xff0c;信息间采用空格分隔&#xff0c;每人一行&#xff0c;空行回车结束录入&a…

EMQX 实践

MQTT 核心概念 发布订阅 MQTT 基于发布订阅模式&#xff0c;它解耦了消息的发送方&#xff08;发布者&#xff09;和接收方&#xff08;订阅者&#xff09;&#xff0c;引入了一个中间代理的角色来完成消息的路由和分发。发布者和订阅者不需要知道彼此的存在&#xff0c;他们…

向量数据库:在数据世界划分新领域

向量数据库&#xff1a;在数据世界划分新领域 向量数据库正成为数据管理领域的一个独特类别&#xff0c;这一趋势反映了过去十年SQL与NoSQL之争的历史演变。随着现代企业面对越来越复杂的数据环境&#xff0c;向量数据库以其专门的功能&#xff0c;处理高维度数据和语义搜索能…

代码随想录算法训练营第day47|121. 买卖股票的最佳时机 、 122.买卖股票的最佳时机II

目录 121. 买卖股票的最佳时机 122.买卖股票的最佳时机II 121. 买卖股票的最佳时机 力扣题目链接(opens new window) 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未…

mybatis实践篇(一)

日志&#xff08;logImpl&#xff09; StdOutImpl <setting name"logImpl" value"org.apache.ibatis.logging.stdout.StdOutImpl"/>Slf4jImpl <setting name"logImpl" value"org.apache.ibatis.logging.slf4j.Slf4jImpl"/&…

cannot find -xml2: No such file or directory的解决方法

一&#xff0c;问题现象 在编译库的时候出现如下图所示的报错&#xff1a;C:/msys64/mingw32/bin/…/lib/gcc/i686-w64-mingw32/13.2.0/…/…/…/…/i686-w64-mingw32/bin/ld.exe: ca nnot find -lxml2: No such file or directory collect2.exe: error: ld returned 1 exit s…

146 Linux 网络编程2 ,Socket编程,如何创建Linux 服务器 和linux 客户端

IPport 就是一个程序在网络上的身份证号码。 这意味着我们需要如果写一个服务器&#xff0c;至少需要将这台服务器的ip 和 端口号写到程序里面。 实际上更细化的说&#xff1a;应该是将这三都写进程序里面 &#xff1a; IP类型&#xff08;IPV4或者IPV6&#xff09;&#xff…

量化交易入门(二)量化交易有关的数学和统计学知识

量化交易有关的数学和统计学知识包括&#xff1a;高等数学&#xff08;微积分、线性代数等&#xff09;、概率论与数理统计是量化分析的基础&#xff0c;时间序列分析是预测市场动向和金融数据分析的关键工具。 &#xff08;一&#xff09;、在量化分析和量化交易领域&#xf…

linux——进程(1)

目录 一、概念 1.1、认识进程 1.2、进程描述符&#xff08;PCB&#xff09; 1.3、进程的结构体&#xff08;task_struct&#xff09; 二、查看进程 三、获取进程的Pid和PPid 3.1、通过系统调用获取进程的PID和PPID 四、创建进程 4.1、fork() 4.2、用if进行分流 五、…

【PyQt错误集 - 1】:PyQt调用多线程导致窗口异常退出的问题分析(进程已结束,退出代码 -1073741819 (0xC0000005))

文章目录 问题分析解决方法 问题分析 运行以下程序&#xff1a; def run_thread_WTD(self):threading.Thread(targetself.WTD).start()def WTD(self):word_path self.word_path.text()# textBrowser为多行文本框QTextEditself.pycorrectorKenlm(word_path, textBrowser)# ke…