222. Count Complete Tree Nodes
来源:互联网 发布:知柏地黄丸成分 编辑:程序博客网 时间:2024/05/01 22:33
//超时class Solution {public: int countNodes(TreeNode* root) { if(!root) return 0; return 1+countNodes(root->left)+countNodes(root->right); }};
//超时class Solution {public: int countNodes(TreeNode* root) { if(!root) return 0; stack<TreeNode*> s; s.push(root); int i=0; while(!s.empty()) { TreeNode* temp=s.top(); s.pop(); if(temp->left) s.push(temp->left); if(temp->right) s.push(temp->right); i++; } return i; }};
//320msclass Solution {public: int countNodes(TreeNode* root) { if(!root) return 0; TreeNode* l=root,*r=root; int l_level=0,r_level=0; while(l) {l_level++;l=l->left;} while(r) {r_level++;r=r->right;} if(l_level==r_level) return pow(2,l_level)-1; return 1+countNodes(root->left)+countNodes(root->right); }};
//296msclass Solution {public: int countNodes(TreeNode* root) { if(!root) return 0; TreeNode* l=root,*r=root; int l_level=0,r_level=0,temp_level=1; while(l) {l_level++;l=l->left;} while(r) {r_level++;r=r->right;} if(l_level==r_level) return pow(2,l_level)-1; TreeNode* temp=root->left; while(temp) {temp_level++;temp=temp->right;} if(l_level==temp_level) return countNodes(root->right)+pow(2,temp_level-1); return countNodes(root->left)+pow(2,r_level-1); }};
//140msclass Solution {public: int countNodes(TreeNode* root) { if(!root) return 0; TreeNode* l=root,*r=root; int l_level=0,r_level=0,temp_level=1; while(l) {l_level++;l=l->left;} while(r) {r_level++;r=r->right;} if(l_level==r_level) return (1<<(l_level))-1; TreeNode* temp=root->left; while(temp) {temp_level++;temp=temp->right;} if(l_level==temp_level) return countNodes(root->right)+(1<<(temp_level-1)); return countNodes(root->left)+(1<<(r_level-1)); }};
//280msclass Solution {public: int countNodes(TreeNode* root) { if(!root) return 0; TreeNode* l=root->left,*r=root->right; int l_level=1,r_level=1; while(l) {l_level++;l=l->left;} while(r) {r_level++;r=r->left;} if(l_level==r_level) return pow(2,l_level-1)+countNodes(root->right); return countNodes(root->left)+pow(2,r_level-1); }};
//108ms 使用(1<<r_level)代替powclass Solution {public: int countNodes(TreeNode* root) { if(!root) return 0; TreeNode* l=root->left,*r=root->right; int l_level=0,r_level=0; while(l) {l_level++;l=l->left;} while(r) {r_level++;r=r->left;} if(l_level==r_level) return (1<<l_level)+countNodes(root->right); return countNodes(root->left)+(1<<r_level); }};
//80ms 为什么比递归快,是因为每次递归都需要重新计算左右两个方向的告诉,实际上不需要class Solution {public: int countNodes(TreeNode* root) { if(!root) return 0; int sum=0; TreeNode* l=root->left,*r=root->right; int l_level=0,r_level=0; while(l) {l_level++;l=l->left;} while(r) {r_level++;r=r->left;} while(root) { if(l_level==r_level) { sum+=(1<<l_level); root=root->right; } else { sum+=(1<<r_level); root=root->left; } if(root) { l_level--; r=root->right; r_level=0; while(r) {r_level++;r=r->left;} } } return sum; }};
//80ms 递归,思路同上class Solution {public: int countNodes(int l_level,TreeNode* root) { if(!root) return 0; TreeNode* r=root->right; int r_level=0; while(r) {r_level++;r=r->left;} if(l_level==r_level) return (1<<l_level)+countNodes(l_level-1,root->right); return countNodes(l_level-1,root->left)+(1<<r_level); } int countNodes(TreeNode* root) { if(!root) return 0; TreeNode* l=root->left,*r=root->right; int l_level=0,r_level=0; while(l) {l_level++;l=l->left;} while(r) {r_level++;r=r->left;} if(l_level==r_level) return (1<<l_level)+countNodes(l_level-1,root->right); return (1<<r_level)+countNodes(l_level-1,root->left); }};
0 0
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes
- 222. Count Complete Tree Nodes**
- 222. Count Complete Tree Nodes
- 快餐刷卡消费之触摸屏实现(含关键源码)
- eclipse 打开server部署路径
- 2016SDAU编程练习二1015
- OC 基本的便利排序方法
- 微软2016校园招聘4月在线笔试题目解析
- 222. Count Complete Tree Nodes
- 自定义栈
- 专题二总结报告
- 第九周上机实践项目-项目3-工资类
- 【APM】开发环境配置
- 回溯算法之批处理作业调度
- set,bitset 的一个应用实例——数据结构和比较算法
- Java内存模型中的三个代
- Spring AOP初试