如上圖所示,由正整數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...