求給定二叉樹的最大深度,
最大深度是指樹的根結點到最遠葉子結點的最長路徑上結點的數量。
輸入給定的二叉樹是,
輸出深度優先搜尋【ps:使用遞迴】3
二叉樹的最大深度可以通過深度優先搜尋遍歷的方式去計算。
遞迴的解析:終止條件:當 root 為空,說明已越過葉節點,因此返回 深度 0 。
遞推工作:本質上是對樹遍歷。
計算節點 root 的 左子樹的深度 ,即呼叫 maxdepth(root.left);
計算節點 root 的 右子樹的深度 ,即呼叫 maxdepth(root.right);
返回值:返回 此樹的深度 ,即 max(maxdepth(root.left), maxdepth(root.right)) + 1。
// 思路1
public
class
solution
int left =
maxdepth
(root.left)
;int right =
maxdepth
(root.right)
;return
(left > right ? left : right)+1;}}
時間複雜度分析:o(n):遍歷二叉樹的所有節點
空間複雜度分析:小夥伴如果想測試的話,可以直接到牛客網這個鏈結做測試o(n):最差情況下(當樹退化為鍊錶時),遞迴深度可達到n
二叉樹的最大深度-牛客網
二叉樹的深度 牛客網 二叉樹的最大深度
求給定二叉樹的最大深度,最大深度是指樹的根結點到最遠葉子結點的最長路徑上結點的數量。示例1輸入 返回值 2 示例2輸入 返回值 3 解題方法 最大深度一般都遞迴,遞迴注意結束的條件,不然就死迴圈了 class treenode def init self,x self.val x self.left...
牛客刷題二叉樹之對稱二叉樹
請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。用兩種方式,遞迴和非遞迴 一 遞迴方式 struct treenode class solution bool issymmetricalcore treenode left,treenod...
牛客網 二叉樹
如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹中共有4個...