完全二叉樹

2021-08-26 02:03:35 字數 827 閱讀 5429

有一顆二叉樹,最大深度為d,且所有葉子的深度都相同。所有結點從左到右從上到下的編號為1,2,3,·····,2的d次方減1。在結點1處放乙個小猴子,它會往下跑。每個內結點上都有乙個開關,初始全部關閉,當每次有小猴子跑到乙個開關上時,它的狀態都會改變,當到達乙個內結點時,如果開關關閉,小猴子往左走,否則往右走,直到走到葉子結點。一些小猴子從結點1處開始往下跑,最後乙個小猴兒會跑到**呢?

輸入輸入二叉樹葉子的深度d,和小猴子數目i,假設i不超過整棵樹的葉子個數,d<=20.最終以 0 0 結尾

輸出輸出第i個小猴子所在的葉子編號

樣例輸入

4 23 4

0 0樣例輸出

12思路:

完全二叉樹的簡單應用。

性質:若完全二叉樹有n個結點,則對任意結點i(1 <= i <= n),有

1.若i = 1,結點i是二叉樹的根,無雙親;若i > 1,則雙親為i / 2。

2.若2i <= n,則i的做孩子是2i,若2i > n,則i無左孩子。

3.若2i + 1 <= n,則i的右孩子是2i + 1,若2i + 1 > n,則i無右孩子。

**如下:

#include#include#include#include#include#includeusing namespace std; int visit[1000010]; #define init(arr, value) memset(arr, value, sizeof(arr)) #define max(a, b) return a > b ? a : b int main() } printf("%d\n", k / 2); //k為葉子結點的左孩子,所以除2 } return 0; }

二叉樹,完全二叉樹,滿二叉樹

二叉樹 是n n 0 個結點的有限集合,它或者是空樹 n 0 或者是由乙個根結點及兩顆互不相交的 分別稱為左子樹和右子樹的二叉樹所組成。滿二叉樹 一顆深度為k且有2 k 1個結點的二叉樹稱為滿二叉樹。說明 除葉子結點外的所有結點均有兩個子結點。所有葉子結點必須在同一層上。完全二叉樹 若設二叉樹的深度...

二叉樹和完全二叉樹

二叉樹規律 假設根節點的高度為0 二叉樹是每個節點至多只有兩個節點的樹 深度為i所在的層至多有 2 i個節點 高度為k的二叉樹至多有2 k 1 1個節點 n0表示度為0的節點,n2表示度為2的節點,存在n0 n2 1 對所有樹有 節點個數 邊數 1 完全二叉樹規律 節點數為n的完全二叉樹,其高度為 ...

完全二叉樹

最近在看資料結構和演算法,這好多天沒碰幾乎全忘,搞乙個看到乙個完全二叉樹都算了半天,網上眾說紛紜啊,我還是以我的理解記錄一下給我做個記憶吧,以我這記憶力指不定以後又忘了。首先幾個概念 理想二叉樹,滿二叉樹,完全二叉樹。1 滿二叉樹 所有節點 除葉子 都有2個子節點,葉子節點都在一層,就是滿了的意思。...