如何求二叉樹中某個指定節點的深度

時間 2021-05-30 23:41:47

1樓:刑事組之虎曹達華

遞迴求深度,傳入相應的節點即可

* public static int treeDepth(TreeNode root)

* // 計算左子樹的深度

* int left = treeDepth(root.left);

* // 計算右子樹的深度

* int right = treeDepth(root.right);

* // 樹root的深度=路徑最長的子樹深度 + 1* return left >= right ? (left + 1) : (right + 1);* }

2樓:一鯨

如果有父節點指標,depth = n => (n === null ? 0 : depth(n.parent) + 1)

如果沒有父節點指標,depth = (n, r) => n === r ? 1 : r === null ?

Infinity : (Math.min(depth(n, r.

left), depth(n, r.right)) + 1)

delete二叉樹根節點,會一次清空二叉樹占用的記憶體嗎?

一頁書 你需要自己實現析構函式。假設你的節點定義是這樣 struct TreeNode TreeNode TreeNode if right nullptr 魚你太美 上面幾樓的答案都是錯的。其實這不就是乙個深度優先 後序遍歷訪問每乙個結點的過程嗎,只不過訪問結點的方式改成了delete而已。析構根...

如何求二叉樹的直徑的路徑?

二叉樹擴充套件為樹 即樹的直徑 其實是很經典的演算法。常見有兩種寫法 1樹形dp 2貪心。列印路徑的話,與普通dp列印路徑一樣 我習慣是求出最優值再根據dp的決策遞迴列印 下面的截圖來自紫書p281。 rsa 二叉樹上每條路徑都可以分成兩段,前半段深度遞減,後半段深度遞增。於是我們可以列舉路徑上深度...

為什麼二叉樹的前序遍歷和中序遍歷對應入棧和出棧次序?

碳酸鈉 實際上比較一下前序和中序的迴圈遍歷演算法就容易懂了 前序和中序的區別在於訪問結點的位置不同 前序是在入棧時訪問,而中序是在出棧時訪問。具體來講,前序的訪問語句在每次壓棧時就會執行,中序的訪問語句在左子樹不斷壓棧,直到在最左處退棧時才執行,是不是符合印象中的遍歷順序?正是因為前序和中序依附於同...