输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
解题思路:利用层次遍历,遍历一层,层数加1.
class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public class Solution {
public static void main(String[] args) {
// 二叉树的深度
// 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
TreeNode tn = new TreeNode(4);
TreeNode tn1 = new TreeNode(5);
TreeNode tn2 = new TreeNode(6);
TreeNode tn3 = new TreeNode(7);
TreeNode tn4 = new TreeNode(8);
TreeNode tn5 = new TreeNode(9);
TreeNode tn6 = new TreeNode(10);
tn.left = tn1;
tn.right = tn2;
tn1.left=tn3;
tn1.right=tn4;
tn2.left=tn5;
tn2.right=tn6;
Solution s = new Solution();
System.out.println(s.TreeDepth(tn));
}
public int TreeDepth(TreeNode root) {
if(root==null){
return 0;
}
int depth=0;
TreeNode p=root;
TreeNode last=root;
Deque<TreeNode> queue = new LinkedList<TreeNode>();
queue.addLast(p);
while(queue.size()!=0){
p=queue.peekFirst();
queue.removeFirst();
if(p.left != null){
queue.addLast(p.left);
}
if(p.right != null){
queue.addLast(p.right);
}
if(p==last){
depth+=1;
if(queue.size()!=0){
last=queue.getLast();
}
}
}
return depth;
}
}