1. 程式人生 > >劍指Offer 二叉樹的深度

劍指Offer 二叉樹的深度

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 二叉樹的深度