222. Count Complete Tree Nodes
来源:互联网 发布:每天一杯速溶咖啡 知乎 编辑:程序博客网 时间:2024/05/22 15:10
答案正确但是超时,==,本以为采用对分的方法就可以了,,哭==,帖上对分的方式。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool judge(int num,int height,TreeNode* root) { stack<int> path; for(int i=0;i<height+1;i++) { path.push(num); num=num/2; } TreeNode* temp=root; int top=path.top(); path.pop(); while((!path.empty())&&temp!=NULL) { if(path.top()-top*2==0) temp=temp->left; else temp=temp->right; top=path.top(); path.pop(); } if(temp==NULL) return false; else return true; } int countNodes(TreeNode* root) { if(root==NULL) return 0; //get height int height=0; TreeNode* temp=root; while(!(temp->left==NULL&&temp->right==NULL)) { temp=temp->left; height++; } int left=0; int right=pow(2,height)-1; while(right-left>1) { int mid=left+(right-left)/2; if(judge(mid,height,root)==true) left=mid; else right=mid-1; } //cout<<height; if(judge(right,height,root)==true) return right+1+pow(2,height)-1; else if(judge(left,height,root)==true) return left+1+pow(2,height)-1; else{} return 0; }};
参考了discuss,它采用的是递归的方法,参考其方法求解。最终AC代码,发现运行时间缩短了好多。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: int countNodes(TreeNode* root) { if(root==NULL) return 0; int left=0; int right=0; TreeNode* temp=root; while(temp!=NULL) { temp=temp->left; left++; } temp=root; while(temp!=NULL) { temp=temp->right; right++; } if(left==right) return pow(2,left)-1; else { return 1+countNodes(root->left)+countNodes(root->right); } }};
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
- noi-7805-配对碱基链
- phpMyAdmin中sql-parser组件的使用
- iOS对象属性详解
- Cloud云深商学院内部频道剪辑上篇-社会大学
- 整数分解为若干项之和
- 222. Count Complete Tree Nodes
- uboot下函数run_main_loop分析
- jQuery选择器之层级选择器
- Git rebase和 Git merge的区别
- 单例模式
- 求带环单链表的入口点
- Linux脚本申请证书
- Android Studio 打包时 Signature Version V1 V2
- 微信公众号项目笔记 二