1、假設二叉樹
n0 = x //度數為0的節點數,n1 = y //度數為1的節點數,n2 = z //度數為2的節點數
其中有關係:
n0 = n2 + 1
2、對於一棵節點數為n、度為4的樹來說那麼樹的高度至多是
但是某一層並不一定正好有4個節點,因為這和度為4並沒有必然聯絡
3、度為4,高度為h的樹,至少有h+3個節點。
原理同上一題。
4、後序線索樹的遍歷仍然需要棧的支援。
如上圖所示,後序線索樹遍歷時,最後訪問根節點。如果是從右孩子x返回訪問父節點
由於節點x的右孩子不一定為空,此時右指標無法指向其後繼,因此通過指標可能無法遍歷整棵樹
如圖中,節點中數字表示遍歷順序。
a、節點6的右指標指向其右孩子5,而不指向其後序後繼節點7
b、因此後序遍歷還需要棧的支援,而前序和中序可以不用。
5、一棵哈夫曼樹,共有215個節點,對其進行哈夫曼編碼,共有多少種不同的碼字?
n0 = n2 + 1,n0為葉子節點,n2為度為2的節點,哈夫曼樹只有度為0和度為2的節點。因此葉子節點數為 (215 + 1)/ 2 = 108 個,因此共有108種不同的編碼
6、含有20個節點的平衡
二叉樹最大深度為多少?
平衡二叉樹節點數的遞推公式為
n0 = 0
n1 = 1
n2 = 2
n(h) = 1 + n(h-1) + n(h-2) //h為平衡二叉樹高度,n(h)為構造此平衡二叉樹所需最少節點數
由此公式得:
構造5層至少需要12個節點,構造6層需至少要20個節點。
幾個有關STL vector的問題
1,使用iterator進行遍歷和直接使用下標遍歷的區別 for vector iterator it v.begin it v.end it for int i 0 i2,如何判斷乙個vector是空的 vectorv1 v1.empty 則是返回乙個布林型變數 3,vector中元素的插入 在p...
幾個經典的博弈問題
有一種很有意思的遊戲,就是有物體若干堆,可以是火柴棍或是圍棋子等等均可。兩個 人輪流從堆中取物體若干,規定最後取光物體者取勝。這是我國民間很古老的乙個遊戲 別看這遊戲極其簡單,卻蘊含著深刻的數學原理。下面我們來分析一下要如何才能夠 取勝。一 巴什博奕 bash game 只有一堆n個物品,兩個人輪流...
有關DLL的幾個問題
一 dll被多個程序呼叫問題 win32系統會確保記憶體中只有乙個該dll的拷貝,這是通過記憶體對映檔案來實現的。不同的程序分別將這份dll的 段位址對映到自己的程序空間中,同時不同的程序在自己的程序空間分別有各自的乙份該dll的資料段拷貝。這是因為,在win32環境中,每個程序都有了它自己的位址空...