博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode-JAVA] Count Complete Tree Nodes
阅读量:5146 次
发布时间:2019-06-13

本文共 1150 字,大约阅读时间需要 3 分钟。

题目:

Given a complete binary tree, count the number of nodes.

Definition of a complete binary tree from :

In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible. It can have between 1 and 2hnodes inclusive at the last level h.

题意:求一个完全二叉树的节点个数。

思路:找到最后一层的最后一个节点,可以判断左右节点最最左边的层数是否相同,如果相同,则左子树为满二叉树,若不同则右子树为满二叉树。

其中在求解的过程中,需要用到幂次的运算,如果用Math.pow会超时,可以考虑有位操作,但是要考虑2的0次幂的特殊情况。

代码:

public class Solution {    public int countNodes(TreeNode root) {        if(root == null)            return 0;        int left = countLevel(root.left);        int right = countLevel(root.right);                int leftpow = 2<<(left-1);        int rightpow = 2<<(right-1);                if(left == 0)   //0次幂,<

 

后来想了一下,有个小技巧,因为要用到2的0次幂,可以用1的1次幂来表示,因此可以将位操作换成( 1<< ) 可以大大精简代码。

代码:

public class Solution {    public int countNodes(TreeNode root) {        if(root == null)            return 0;        int left = countLevel(root.left);         int right = countLevel(root.right);                if(left == right){            return (1<

 

转载于:https://www.cnblogs.com/TinyBobo/p/4588175.html

你可能感兴趣的文章
SSL-ZYC 采购特价商品【SPFA】
查看>>
软工作业 2:时事点评-红芯浏览器事件
查看>>
网页里动态加载js
查看>>
https://tieba.baidu.com/p/2248070024
查看>>
eclipse 怎么查看相关引用
查看>>
pprint模块介绍
查看>>
命令行查看端口
查看>>
Vim复制一整行和复制多行
查看>>
时光穿梭机
查看>>
NVIDIA GRID 和 NICE DCV 技术用于实现 Linux 和 Windows® 图形加速虚拟桌面
查看>>
codevs——T2488 绿豆蛙的归宿
查看>>
MSIL实用指南-闭包的生成和调用
查看>>
使用Roslyn脚本化C#代码,C#动态脚本实现方案
查看>>
JDK dump
查看>>
Jenkins-在windows上安装及其部署
查看>>
【推荐收藏】10个获取免费网页背景纹理的最佳网站
查看>>
素材锦囊:50套高质量的 PSD 素材免费下载《下篇》
查看>>
帮助你在 Photoshop 中轻松实现长阴影效果的工具
查看>>
hdu 4602 递推关系矩阵快速幂模
查看>>
[Dynamics 365] 关于Currency的一点随笔
查看>>