方法一:遞迴法求解二叉樹深度,遞迴公式為h(root) = max(h(root->left), h(root->righr)) + 1,遞迴終止條件為樹為空數即root = nullptr。
時間複雜度:二叉樹中每個節點都要對其求二叉樹最大深度,所以求二叉樹最大深度函式執行次數為n,故時間複雜度為o(n)。
空間複雜度:在同一時刻只有乙個函式在執行,函式執行過程中只需要幾個臨時變數,所以空間複雜度為o(1)。
1int maxdepth(treenode*root)
方法二:非遞迴實現,與層序遍歷二叉樹的思想類似,將根節點入隊,然後迴圈判斷佇列是否為空,不為空隊頭元素出隊,然後將隊頭元素的左右孩子結點依次入棧。在這個過程中維護兩個量分別是:當前層在佇列中的元素個數、下一層在佇列中的元素個數,再迴圈中如果當前層在佇列中的元素個數為0,那麼深度加1。
時間複雜度:二叉樹中每個節點都要出棧,所以迴圈執行次數為n,故時間複雜度為o(n)。
空間複雜度:函式執行過程總只用到一些臨時變數,空間複雜度為o(1)。
1int maxdepth(treenode*root)
20if (ptempnodeptr->right)
24if (!currenttiernodenum) 29}
3031
return
depth;
32 }
LeetCode104二叉樹最大深度
給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回它的最大深度 3 definition for a binary tree node....
LeetCode 104 二叉樹的最大深度
題目描述 給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回它的最大深度 3 解題思路 此題可以用層次遍歷來解,每層設定乙個count值來...
leetcode 104 二叉樹的最大深度
給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回它的最大深度 3 definition for a binary tree node....