樹 二叉樹的最大深度

2021-10-22 18:51:33 字數 1199 閱讀 2862

一、深度優先法

思路:根據深度優先演算法,不斷的遞迴樹的深度,直到沒有葉子結點。使用的是遞迴的思想,大致的流程圖如下:

**如下:

/**

* 深度優先演算法

* @param root

* @return

*/public

static

intmaxdepth1

(treenode root)

執行結果:

二、廣度優先法

思路:使用乙個佇列來儲存當前層的節點,因為廣度優先演算法是一層一層來的,儲存空間中只儲存當前層。我們每次從佇列中個拿出乙個元素進行拓展,這樣每個都拓展完成,那麼佇列中儲存的就是下一層的所有節點元素,一直進行拓展,直到最後沒有子節點。記錄每次拓展,所拓展的層數就是樹的最大深度。**如下:

/**

* 廣度優先演算法

* @param root

* @return

*/public

static

intmaxdepth

(treenode root)

if(node.right != null)

size--;}

deep++;}

return deep;

}

執行結果:

三、對比

對比2個演算法,再給出的執行結果來看,深度優先演算法的速度明顯快於廣度優先演算法,因為深度優先演算法不需要拓展每乙個節點。但是廣度優先演算法需要拓展每一層的元素,導致時間上的差別,但是廣度有限在記憶體消耗要明顯低於深度優先演算法。因為深度優先演算法需要儲存拓展深度的這條路徑的所有元素,但是廣度優先演算法只需要儲存這一層的元素。不需要要對完整的深度路徑進行儲存。(個人理解)

如有錯誤,歡迎指正!!!

參考:

二叉樹的深度 二叉樹的深度 二叉樹最大寬度

題目 輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉節點依次經過的節點 含根 葉節點 形成樹的一條路徑,最長路徑的長度為樹的深度。例如 給定二叉樹 3,9,20,null,null,15,7 返回它的最大深度 3 根節點加上左右子樹的最大深度就是樹的最大深度。如下 class solution ...

二叉樹的最大深度

1.問題描述 給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的距離。樣例給出一棵如下的二叉樹 1 2 3 4 5這個二叉樹的最大深度為3.2.解題思路 如果二叉樹為空,則深度為0 如果不為空,運用遞迴,分別求其左子樹和右子樹的深度,取最大的再加1,因為根節點深度是1,要加進去。3...

二叉樹的最大深度

問題描述 給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的距離。樣例 給出一棵如下的二叉樹 1 2 3 4 5這個二叉樹的最大深度為3.實現思路 要求二叉樹的最大深度,首先判斷二叉樹是否為空,若為空,則深度為0。如果不為空,分別求左子樹的深度和右子樹的深度,取最大的那乙個加1,即...