hud5524 Subtrees 二叉树中不同节点数的字数个个数
2015-11-06 21:55
351 查看
用set储存子数的节点数,set中元素的数目及为结果
#include<cstdio> #include<set> #include<iostream> using namespace std; set<long long> s; long long a[65];//每层节点的个数 void dfs(long long n,int D)//n为当前节点数,D为当前层数 { if(D==0 || n==0 || s.count(n)) return; s.insert(n); long long l;//最后一层左子树节点个数 long long r;//最后一层右子树节点个数 long long num=n-a[D]+1;//最后一层节点总数 if(num<=a[D]/2)//右边满 { l=num; r=0; } else//左边满或两边都满 { l=a[D]/2; r=num-a[D]/2; } dfs(a[D-1]-1+l,D-1); dfs(a[D-1]-1+r,D-1); } int main() { #ifdef CDZSC freopen("in.in","r",stdin); #endif a[1]=1; for(int i=2;i<65;i++) a[i]=a[i-1]*2; long long n; int D; while(~scanf("%I64d",&n)) { s.clear(); for(D=2;a[D]-1<n;D++) {} D--; dfs(n,D); printf("%d\n",s.size()); } }
相关文章推荐
- 数据库性能优化的方法
- ECShop模板原理
- CEF3开发者系列之JS与C++交互之二
- Android之OptionsMenu与Notification的实现
- EF| CodeFirst 代码先行
- LeJOS学习(9):一个整合传感器与马达的简单例子
- 懒猫们终究要付出代码(本领是一生的),鲸鱼们的短视(逐小利而暴死)——这么说我应该只去互联网公司:IM,云存储,邮箱(别的一概不考虑)
- linux笔记:shell基础和bash的基本功能
- java 多线程使用方法及Socket的使用
- 通过Activity启动其他Activity
- HDU 3724 Encoded Barcodes (2010 Asia Tianjin Regional Contest )
- MFC对话框屏幕居中
- 一个简单的使用Quartz和Oozie调度作业给大数据计算平台执行
- hdu 5525(数学题)
- ZigZag Convertion
- 典型用户和场景
- Introduction to Algorithm - Summary of Chapter 7 - Quicksort
- 蓝懿ios 技术内容和心得交流分享 11.6
- hdu 4675 GCD of Sequence(计数)
- iOS开发——高德地图调研之显示地图、定位与地理编码等