題目:輸入一棵二元樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。
例如:輸入二元樹: 10
/\614
// \412
16 輸出該樹的深度3。
二元樹的結點定義如下:
struct sbinarytreenode // a node of the binary tree
;
分析:這道題本質上還是考查二元樹的遍歷。
題目給出了一種樹的深度的定義。當然,我們可以按照這種定義去得到樹的所有路徑,也就能得到最長路徑以及它的長度。只是這種思路用來寫程式有點麻煩。
我們還可以從另外乙個角度來理解樹的深度。如果一棵樹只有乙個結點,它的深度為1。如果根結點只有左子樹而沒有右子樹,那麼樹的深度應該是其左子樹的深度加1;同樣如果根結點只有右子樹而沒有左子樹,那麼樹的深度應該是其右子樹的深度加1。如果既有右子樹又有左子樹呢?那該樹的深度就是其左、右子樹深度的較大值再加1。
上面的這個思路用遞迴的方法很容易實現,只需要對遍歷的**稍作修改即可。參考**如下:
///
// get depth of a binary tree
// input: ptreenode - the head of a binary tree
// output: the depth of a binary tree
///int treedepth(sbinarytreenode *ptreenode)
以上**
何海濤部落格
程式設計題目 二元樹的深度
52.二元樹的深度 樹 題目 輸入一棵二元樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為 樹的深度。例如 輸入二元樹 10 6 14 4 12 16 輸出該樹的深度 3。二元樹的結點定義如下 struct sbinarytreenode a...
程式設計題目 二元樹的深度
52.二元樹的深度 樹 題目 輸入一棵二元樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為 樹的深度。例如 輸入二元樹 10 6 14 4 12 16 輸出該樹的深度 3。二元樹的結點定義如下 struct sbinarytreenode a...
二元空間分割樹 BSP (二)
來自於 在渲染3d遊戲的室內場景時,bsp樹是往往是乙個比較複雜但非常有效的方法。它可以用來進行高效的深度檢測。深度檢測通常 用來決定哪個物體離視點更遠,然後再根據從遠到近進行多邊形繪製,這樣出來的結果才是正確的。首先給出乙個圖,我們可以看出在removal b區域,白色的多邊形覆蓋了黃色多邊形,而...