二叉树的深度
题目要求:给出一个二叉树,求得其最大深度。
tags:tree,depth-first search,breadth-first search,recursive
首先想到递归做法,如果一个节点为空,则该节点最大深度为0,如果不为空,那么该节点的最大深度为其左子树与右子数最大值加一。
public static int maxDepth(TreeNode root) {
if(root==null){
return 0;
}else{
return 1+Math.max(maxDepth(root.left), maxDepth(root.right));
}
}
另外,可以改造先序遍历,使其可以取得该次遍历的深度,并设置一个max的全局变量,即可取得最大值。
public static void preOrderTraverse(TreeNode node,int i){
if(node==null){
if(max<i){
max = i;
}
return;
}
i = i+1;
System.out.println(node.val+" "+i);
preOrderTraverse(node.left,i);
preOrderTraverse(node.right,i);
}