题目链接:
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
解题思路:
这道题目和二叉树打印成多行那个题目很像,所以代码也差不多啦!
1 import java.util.ArrayList; 2 /** 3 public class TreeNode { 4 int val = 0; 5 TreeNode left = null; 6 TreeNode right = null; 7 8 public TreeNode(int val) { 9 this.val = val; 10 11 } 12 13 } 14 */ 15 public class Solution { 16 public int TreeDepth(TreeNode root) { 17 ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); 18 ArrayList<Integer> list = new ArrayList<>(); 19 ArrayList<TreeNode> queue = new ArrayList<>(); 20 21 if(root==null) 22 return 0; 23 24 int start = 0; 25 int end = 1; 26 queue.add(root); 27 int count=0; 28 while(!queue.isEmpty()) 29 { 30 TreeNode node = queue.remove(0); 31 start++; 32 if(node.left!=null) 33 queue.add(node.left); 34 if(node.right!=null) 35 queue.add(node.right); 36 list.add(node.val); 37 if(start == end) 38 { 39 res.add(list); 40 count++; 41 start = 0; 42 end = queue.size(); 43 list = new ArrayList<>(); 44 } 45 } 46 return count; 47 } 48 }