順序二叉樹,求m下面有多少個節點(總共n個節點)
阿新 • • 發佈:2019-01-07
//用佇列來計算 ,如果m的左孩子節點x滿足<=n,則進入佇列, 如果m的右孩子y<=n,也進入佇列 //然後將x在繼續彈出佇列,看他的左右孩子是否滿足,滿足則還是加入佇列,以此類推,直到佇列為空 //deque的常用操作函式為:c.empty() c.front() c.back() c.size() c.clear()清除c容器中擁有的所有元素 //c.insert(pos,num)在pos位置插入元素num /* .push_back(num)在末尾位置插入元素 c.pop_back()刪除末尾位置的元素 c.push_front(num)在開頭位置插入元素 c.pop_front()刪除開頭位置的元素 */ #include<iostream> #include<deque> using namespace std; int main() { deque<int> c;//構造佇列 int m,n; while(cin>>m>>n) { if(m==0 && n==0) break; int result=0; c.push_back(m); while(!c.empty()) { int current=c.front(); c.pop_front(); if(2*current<=n) { c.push_back(2*current); result++; } if(2*current+1<=n) { c.push_back(2*current+1); result++; } } cout<<++result<<endl; } return 0; }