Leetcode104 二叉樹最大深度 踩坑

2022-08-14 21:03:21 字數 1492 閱讀 2376

104題難度為簡單,可本人卻畫了不少時間,現將遇到的坑寫在此,方便日後複習。大家應該不會遇到這麼蠢的問題。

1.遞迴方法很簡單,也很巧妙這裡就不說了。

2.下面主要是深度遍歷方法中本人遇到的坑。

3.看到題目想到可以通過深度遍歷來解決問題,借助棧把深度計算出來(坑就在這個棧裡,這種題目還是先畫個圖看看,再擼**吧,笑哭了)。

下面是本人的**,思想:將每層元素存入棧中,然後再逐一彈出,並深度標誌加1。大概想了一下應該問題不大,題目給的實列也通過了,可提交**時問題來了

不能通過所有例項。並給出了沒通過的樹,如下:[1,2,3,4,null,null,5]; 

1

/**2

* definition for a binary tree node.

3* public class treenode

8* }9*/

10class

solution

15 stackstack = new stack<>();

16int num = 0;

17stack.push(root);

18while(!stack.isempty())28}

29return

num;30}

31 }

此樹的最大深度為3,而本人**輸出為4。畫圖後自己推一下,確實是4。因為棧總是先彈出後進的元素當,**執行到元素3時,應該接著彈出2才對,可棧會彈出5,那麼問題就來了,

當5彈出後此時深度標誌就已經為3.當下次迴圈彈出元素2時,左子樹還存在元素4。導致多一次迴圈,輸出為4。

4.通過觀察發現如果符合先進先出就可符合題意,當然想到了linkedlist。add新增元素,pollfirst彈出先進如元素。完美解決問題。**如下:

1

/**2

* definition for a binary tree node.

3* public class treenode

8* }9*/

10class

solution

15 linkedliststack = new linkedlist<>();

16int num = 0;

17stack.add(root);

18while(!stack.isempty())

26if(cur.right != null

) 29}30

}31return

num;32}

33 }

5.主要沒有考慮完善棧先進後出的特性。

記遞迴**如下:

1

/**2

* definition for a binary tree node.

3* public class treenode

8* }9*/

10class

solution else 19

}20 }

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....