劍指Offer 二叉樹的深度
阿新 • • 發佈:2018-02-15
right 步驟 最長 depth lan tar rank link span
題目描述:輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。
題目鏈接:二叉樹的深度
思路:通過廣度優先遍歷(BFS)來獲取二叉樹的深度。
步驟:
1 如果根結點為空,則返回0。
2 創建實現了Queue接口的LinkedList對象。
3 通過隊列來執行BFS。
4 返回二叉樹的深度。
Java代碼:
1 import java.util.Queue;
2 import java.util.LinkedList;
3 /**
4 public class TreeNode {
5 int val = 0;
6 TreeNode left = null;
7 TreeNode right = null;
8
9 public TreeNode(int val) {
10 this.val = val;
11
12 }
13
14 }
15 */
16 public class Solution {
17 // 從根結點到葉子結點的最長路徑長度
18 // BFS
19 public int TreeDepth(TreeNode root) {
20 if (root == null ) {
21 return 0;
22 }
23
24 Queue<TreeNode> queue = new LinkedList<TreeNode>();
25 queue.add(root);
26 int depth = 0;
27
28 while (true) {
29 int size = queue.size();
30 if (size == 0) {
31 break ;
32 }
33
34 while (size > 0) {
35 TreeNode cur = queue.remove();
36 TreeNode left = cur.left, right = cur.right;
37 if (left != null) {
38 queue.add(left);
39 }
40 if (right != null) {
41 queue.add(right);
42 }
43
44 size--;
45 }
46
47 depth++;
48 }
49
50 return depth;
51 }
52 }
劍指Offer 二叉樹的深度