题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
题目链接:二叉树的深度
思路:通过广度优先遍历(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 }