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

【改造先序遍历】222. 完全二叉树的节点个数

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

解题思路-先序

  • 直接改造先序遍历算法
  • 针对一个节点 如果节点为空 那么直接返回0
  • 其余交给递归

/*** Definition for a binary tree node.* 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;*     }* }*/
class Solution {public int countNodes(TreeNode root) {// 直接改造先序遍历算法// 针对一个节点做那些事情if(root == null){return 0;}return 1 + countNodes(root.left) + countNodes(root.right);}
}

解题思路-降低时间复杂度

  • 对于一颗完全二叉树 它的子树 一定有满二叉树
/*** Definition for a binary tree node.* 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;*     }* }*/
class Solution {public int countNodes(TreeNode root) {TreeNode l = root,r = root;// 记录左右子树的高度int hl = 0;int hr = 0;while(l != null){l  = l.left;hl++;}while(r != null){r = r.right;hr++;}// 如果左右子树高度相等  那么说明是一颗满二叉树   完全二叉树一定有子树是满二叉树// 该条件一定会出发if(hl == hr){return (int) Math.pow(2,hl) - 1;}// 如果左右二叉树的高度不一样  直接按照普通的二叉树进行计算 return 1 + countNodes(root.left) + countNodes(root.right);}
}
http://www.lryc.cn/news/184470.html

相关文章:

  • windows文件和目录相关命令
  • TL-ER3220G端口映射设置
  • MySQL Cluster
  • Spring封装的原生WebSocket使用,带组的实现
  • Linux高性能服务器编程 学习笔记 第十一章 定时器
  • jenkins拉取git代码 code 128解决方案
  • 【Linux】 ls命令使用
  • 【CVE-2023-35843】NocoDB 任意文件读取漏洞
  • 在 ubuntu 22.04 上配置界面服务器 vnc
  • 强化学习------Sarsa算法
  • [HNCTF 2022 WEEK2]easy_unser - 反序列化+wakeup绕过+目录绕过
  • FastThreadLocal 快在哪里 ?
  • ggkegg | 用这个神包玩转kegg数据库吧!~(一)
  • 【小黑送书—第三期】>>《深入浅出SSD》
  • linux虚拟机查看防火墙状态
  • Docker 安装 MongoDB
  • c++解压压缩包文件
  • MySql学习笔记:MySql性能优化
  • 机器学习(四十八):粒子群优化(PSO)-提升机器学习模型准确率的秘密武器
  • MySQL - mysql服务基本操作以及基本SQL语句与函数
  • [图论]哈尔滨工业大学(哈工大 HIT)学习笔记16-22
  • 使用关键字abstract 声明抽象类-PHP8知识详解
  • Java中使用正则表达式
  • Python之字符串分割替换移除
  • ubuntu增加内存
  • 黑客都是土豪吗?真实情况是什么?
  • 企业想过等保,其中2FA双因素认证手段必不可少
  • Combination Lock
  • SpringBoot解决LocalDateTime返回数据为数组问题
  • 【数字人】2、MODA | 基于人脸关键点的语音驱动单张图数字人生成(ICCV2023)