完全二叉樹求節點數

2022-06-27 03:57:15 字數 940 閱讀 3581

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

2 754

0 03

63498

6 16

6 28

這裡額外樣例,是在寫判斷語句可能遺忘出錯的點

#include#include#includeusing namespace std;

int m,n;

int getn(int i)//當前結點

int main()

return 0;

}

#include #include int nodenum(int m,int n) 

if(n<= last ) else

sum = sum; //6 16 型

} else

sum = sum + last - start +1; // 6 14型

return sum;

}int main()

return 0;

}

二叉樹 完全二叉樹的節點數

給定一棵完全二叉樹 最後一層所有節點都在最左側,其餘所有層節點數都為2 h 求其節點數。最簡單的方法就是遍歷一遍,把節點數加起來,但時間複雜度太高。以最左邊的路徑長作為二叉樹的高度,對於乙個節點,如果左子樹高度和右子樹高度一樣,說明左子樹為滿二叉樹,此時把其左子樹的節點數計算出來,加入總數,對右子樹...

統計完全二叉樹的節點數

可以遍歷整棵樹來求出來,但是不是最優解法。這裡給出的是時間複雜度為o h 2 詳情參看 程式設計師 面試指南 p176。package com.gxu.dawnlab algorithm4 統計完全二叉樹的節點數 author junbin 2019年6月30日 public class compl...

完全二叉樹節點數

題目 給定一棵完全二叉樹的頭節點head,返回這棵樹的節點個數。如果完全二叉樹的節點數為n,請實現時間複雜度低於o n 的解法。方法 1 遞迴o n 演算法 int nodenum struct treenode head return 1 nodenum head left nodenum hea...