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