输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
//方法一:递归
public int TreeDepth(TreeNode root) {
if(root == null) return 0;
int l = TreeDepth(root.left);
int r = TreeDepth(root.right);
return l > r ? l + 1 : r + 1;
}
//方法二:
public int TreeDepth(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<TreeNode>();
int count = 0, size = 0;
TreeNode temp;
if(root != null) queue.add(root);
while(!queue.isEmpty()){
count = count + 1;
size = queue.size();
for(int i = 0 ; i < size ; i++ ){
temp = queue.poll();
if( temp.left != null) queue.add(temp.left);
if( temp.right != null) queue.add(temp.right);
}
}
return count;
}