做本題的時候,第一次用思路最簡單但是時空複雜度較差的遞迴去遍歷其子樹,結果tle。於是乎只能改用數學計算的方法,去逐層累加。
故本題實際上考察點是:完全二叉樹節點個數的計算
題目描述:
如上所示,由正整數1,2,3……組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。
比如,n = 12,m = 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹中共有4個結點。
輸入:輸入資料報括多行,每行給出一組測試資料,包括兩個整數m,n (1 <= m <= n <= 1000000000)。最後一組測試資料中包括兩個0,表示輸入的結束,這組資料不用處理。
輸出:對於每一組測試資料,輸出一行,該行包含乙個整數,給出結點m所在子樹中包括的結點的數目。
樣例輸入:
3 120 0樣例輸出:
42023年北京大學計算機研究生機試真題
答疑:
#include #include using namespace std;
int main()
else //若n在子樹中
count=(n-m*pow(2,level-1)+1)+(pow(2,level-1)-1);//最後一層的節點數+除去最後層的樹的節點數
//output
cout<
九度OJ 1113 二叉樹
題目1113 二叉樹 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 2599 解決 778 題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13...
九度OJ 1113 二叉樹
題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...
九度OJ1184二叉樹
題目描述 編乙個程式,讀入使用者輸入的一串先序遍歷字串,根據此字串建立乙個二叉樹 以指標方式儲存 例如如下的先序遍歷字串 abc de g f 其中 表示的是空格,空格字元代表空樹。建立起此二叉樹以後,再對二叉樹進行中序遍歷,輸出遍歷結果。輸入 輸入包括1行字串,長度不超過100。輸出 可能有多組測...