leetcode 222. Count Complete Tree Nodes | 222. 完全二叉树的节点个数(Java)
题目
https://leetcode.com/problems/count-complete-tree-nodes/
题解
思路参考左程云《程序员代码面试指南》
顺便贴一下草稿
代码
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;int height = 0;TreeNode node = root;while (node != null) {node = node.left;height++;}return bs(root, 1, height);}/*** 计算以node为根的树的节点数量 = 左子树节点数量 + 右子树节点数量 + node节点本身** @param d current depth* @param h height*/public int bs(TreeNode node, int d, int h) {if (node == null) return 0;int rDepth = d; // 右子树的最左节点的深度TreeNode rNode = node.right;while (rNode != null) {rDepth++;rNode = rNode.left;}if (rDepth == h) // 情况1:node左子树为满二叉树(可用公式计算节点个数),右子树继续递归计算return (1 << (h - d) - 1) + bs(node.right, d + 1, h) + 1;else // 情况2:node右子树为满二叉树(可用公式计算节点个数),左子树继续递归return (1 << (h - d - 1)) - 1 + bs(node.left, d + 1, h) + 1;}
}
leetcode 222. Count Complete Tree Nodes | 222. 完全二叉树的节点个数(Java)相关推荐
- 【LeetCode】222. Count Complete Tree Nodes 解题报告(Python)
[LeetCode]222. Count Complete Tree Nodes 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个 ...
- LeetCode 222. Count Complete Tree Nodes 题解——Java
题目链接:https://leetcode.com/problems/count-complete-tree-nodes/#/description 题目要求:计算完全二叉树的节点个数 思路:首先想到 ...
- 222 Count Complete Tree Nodes
1,这道题如果纯用递归数点而不利用其为一个complete binary tree的话会超时. 2.为了利用这个条件,比较左右两子数的高度:1, 如果相等则左子树为完全二叉树 2, 如果不等, 则右子 ...
- leetcode 222 Count Complete Tree Nodes
今天做了一道leetcode题,刚开始是暴力破解,发现special judge, very large tree 过不去,然后一顿想,一顿查,发现可以运用complete binary tree 的 ...
- Middle-题目95:222. Count Complete Tree Nodes
题目原文: Given a complete binary tree, count the number of nodes. 题目大意: 给出一个完全二叉树,求节点数. 题目分析: 如果直接递归数节点 ...
- 222. Count Complete Tree Nodes
题目: Given a complete binary tree, count the number of nodes. Definition of a complete binary tree fr ...
- leetcode 222.完全二叉树的节点个数 Java
完全二叉树的节点个数 题目链接 描述 示例 初始代码模板 代码 题目链接 https://leetcode-cn.com/problems/count-complete-tree-nodes/ 描述 ...
- LeetCode Count Complete Tree Nodes(二分法)
问题:给出一个完全二叉树,求其结点个数 思路:第一种方式时直接使用递归法,将其左子树个数加上右子树个数再加上根结点 第二种方式二分法,因为完全二叉树除了最后一层外,其它都满足有2^i个结点,而最后一层 ...
- Count Complete Tree Nodes
https://leetcode.com/problems/count-complete-tree-nodes/ 宽度优先搜索方法,超时!! /*** Definition for a binary ...
最新文章
- 实际操作_MFC修改控件的Tab顺序
- spark 资源参数调优
- DrawerLayout侧滑详解
- iBatis应用之获取表的元数据
- linux系统适合电脑小白吗,linux小白说说用linux的感受
- MPU6050开发 -- 在 C52 单片机上测试
- uva 156 Ananagrams
- bootstrap的td可以增加title样式_3.CSS样式的三种使用方式
- 【费用流】摘取作物(jozj 3447)
- 第一阶段:前端开发_Mysql——表与表之间的关系
- OpenSSH 6.7 发布 开源ssh服务器软件
- 在玩客云上部署code-server
- 使用nodejs爬前程无忧前端技能排行(半半成品)
- 我也是不得不说我的学习能力下降了,这两天都没有完成一个模块
- 数据安全治理白皮书_天融信联合发布《自动驾驶数据安全白皮书》
- python差分进化算法_差分进化算法(differential evolution)的Python实现
- 2016中国APP分类排行榜参选入围产品公示
- 超赞的8款开源聊天软件
- wifi信号桥怎么设置_手机设置路由器WDS桥连方法
- 小程序源代码 古诗词