小球下落(二叉樹)

2021-06-22 23:05:04 字數 598 閱讀 5509

有一棵二叉樹,最大深度為d,且所有葉子的深度都相同。所有結點從上到下從左到右編號為1,2,3,...,2^d-1。在結點1處放乙個小球,它會往下落。每個內結點上都有乙個開關,初始全部關閉,當每次有小球落到乙個開關上時,它的狀態都會改變。當小球到達乙個內結點時,如果該結點上的開關關閉,則往左走,否者往右走,直到走到葉子結點。

一些小球從結點1處依次開始下落,最後乙個小球將會落到**呢?輸入葉子深度d和小球個數i,輸出第i個小球最後所在的葉子編號。假設i不超過整棵樹的葉子個數(即2^(d-1))。d<=20。輸入最多包含1000組資料。

樣例輸入:

4 23 4

10 1

2 28 128

16 12345

樣例輸出:127

5123

25536358 、

#include

#include

using namespace std;

int a[1000000];

int main()

{int n,k,i,j,m;

while(cin>>n>>m)

{memset(a,0,sizeof(a));

for(i=0;i

二叉樹之小球下落

題目 有一顆二叉樹,最大深度為d,且所有葉子的深度都相同。所有節點從上到下從左到右編號為1,2,3,2 d 1。在節點1處放置乙個小球,它會往下落。每個內節點上都有乙個開關,初始全都關閉,當每次有小球落到乙個開關上時,他的狀態都會改變。當小球到達乙個內節點時,如果該節點上的開關關閉,則往左走,否則往...

小球下落 (二叉樹的應用)

有一棵二叉樹,最大深度為d,且所有葉子的深度都相同。所有結點從上到下從左到右編號為1,2,3,2 d 1。在結點1處放乙個小球,它會往下落。每個內結點上都有乙個開關,初始全部關閉,當每次有小球落到乙個開關上時,它的狀態都會改變。當小球到達乙個內結點時,如果該結點上的開關關閉,則往左走,否者往右走,直...

二叉樹的編號優化 小球下落

參考 演算法競賽入門經典 每個小球都會落在根節點上,因此前兩個小球必然是乙個在左子樹,乙個在右子樹。一般,只需要知道小球編號的奇偶性,就能知道它是最終在哪棵子樹中。對於那些落入根結點左子樹來說,只需知道該小球是第幾個落在根的左子樹里的,就可以知道它下一步該往左還是往右了。以此類推,直到小球落到葉子結...