222. Count Complete Tree Nodes
Given a complete binary tree, count the number of nodes.
题目含义:给定一个完整二叉树,求所有节点数
百度百科中完全二叉树的定义如下:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
方法一:
1 private int height(root)
{ return root == null ? -1 : 1 + height(root.left);
}
3 public int countNodes(TreeNode root) { 4 int h = height(root); 5 return h < 0 ? 0 : 6 height(root.right) == h-1 ? (1 << h) + countNodes(root.right) 7 : (1 << h-1) + countNodes(root.left); 8 }
方法二:
1 public int countNodes(TreeNode root) { 2 //如果是满二叉树,节点总和是(2的深度次方)-1,如果是完全二叉树,节点总和是左右子树的总和加1 3 if (root == null) return 0; 4 TreeNode left=root,right=root; 5 int leftHeight = 0,rightHeight = 0; 6 while (left!=null) 7 { 8 left = left.left; 9 leftHeight++; 10 } 11 while (right!=null) 12 { 13 right = right.right; 14 rightHeight++; 15 } 16 if (leftHeight == rightHeight) return (int) Math.pow(2,leftHeight)-1; 17 return countNodes(root.left) + countNodes(root.right)+1; 18 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!