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

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

由于是CBT,这道题一定是要用到CBT的性质,来减少时间复杂度。

由于是树的题,很容易想到递归,将原问题划归到子树上。完全二叉树除了最后一层一定是满的,因此子树中一定有一棵是满二叉树,而满二叉树的节点个数是2^n-1,接着只要计算另一棵的节点数即可。

在完全二叉树中,计算树的高度只要一路向左查看即可,O(logn)

T(n) = T(n/2) + O(logn)  =>  T(n) = O((logn)^2)

本题算不上divide and conquer,更像二分,tag 标的也是 Binary Search。

class Solution {public:    int countNodes(TreeNode* root) {        if (root==NULL) return 0;        int lh=height(root->left);        int rh=height(root->right);        if (lh==rh){            return pow(2,lh) + countNodes(root->right);        }        return pow(2,rh) + countNodes(root->left);    }        int height(TreeNode *root){ //return the height of CBT, log(n)        int count=0;        while (root){            ++count;            root = root->left;        }        return count;    }};

 

转载于:https://www.cnblogs.com/hankunyan/p/10967147.html

你可能感兴趣的文章
DateUtils 单元下的公用函数目录
查看>>
构建高效安全的Nginx Web服务器
查看>>
单播,多播,广播的区分
查看>>
jQuery 练习[二]: 获取对象(1) - 基本选择与层级
查看>>
WinAPI: EqualRect、EqualSid、EqualPrefixSid - 判断一个矩形(或其他结构)是否相等
查看>>
ETag
查看>>
【Kafka】《Kafka权威指南》——提交和偏移量
查看>>
GNS3桥接真机网卡
查看>>
Web服务之LNMMP架构及动静分离实现
查看>>
centos6.4搭建zabbix
查看>>
Nginx+Keepalived实现
查看>>
安装python的easy_install和pip
查看>>
android SQLite
查看>>
Apache for Load Banlance
查看>>
Sublime Text 2 快捷键用法大全
查看>>
放弃redis使用mongodb做任务队列支持增删改管理
查看>>
20几岁要懂的处世心理学
查看>>
G口与S口的区别
查看>>
linux xen安装
查看>>
apache2.4.16 显示真实ip
查看>>