二叉樹(簡單思維題)

2021-10-21 22:47:03 字數 909 閱讀 8088

如上圖所示,由正整數1,2,3……組成了一顆二叉樹。

我們已知這個二樹的最後乙個結點是n。

現在的問題是,結點m所在的子樹中一共包括多少個結點。

比如,n = 12,m = 3那麼上圖中的結點13,14,15以及後面的結點

都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,

因此結點m的所在子樹中共有4個結點。

input

輸入資料報括多行,每行給出一組測試資料,包括兩個整數m,n

(1 <= m <= n <= 1000000000)。

最後一組測試資料中包括兩個0,表示輸入的結束,這組資料不用處理。

output

對於每一組測試資料,輸出一行,該行包含乙個整數,

給出結點m所在子樹中包括的結點的數目。

sample input

3 12

0 0

sample output

4
思維題:求結點m及以下有多少層滿足條件,然後利用等比數列公式計算,對於最後一層不滿的,單獨拿出計算,之後計算總和。

#include#includeint main()

int sum=pow(2,depth)-1;

if(n>=l)//最後一層的結點數

sum+=(n-l+1);

printf("%d\n",sum);

} return 0;

}

二叉樹簡單題

二叉樹資料結構treenode可用來表示單向鍊錶 其中left置空,right為下乙個鍊錶節點 實現乙個方法,把二叉搜尋樹轉換為單向鍊錶,要求依然符合二叉搜尋樹的性質,轉換操作應是原址的,也就是在原始的二叉搜尋樹上直接修改。返回轉換後的單向鍊錶的頭節點。題解 使用中序遍歷,記錄前乙個結點,遍歷到每個...

(二叉樹提高題)還原二叉樹

給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入格式 輸入首先給出正整數n 50 為樹中結點總數。下面兩行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母 區別大小寫 的字串。輸出格式 輸出為乙個整數,即該二叉樹的高度。輸入樣例 9 abdfghiec fdhgi...

簡單二叉樹

algorithm.cpp 定義控制台應用程式的入口點。include stdafx.h include define d left 0 define d right 1 template struct bnode bnode plnode 左子樹 bnode prnode 右子樹 t pvalue...