二叉樹的深度
題目要求:給出一個二叉樹,求得其最大深度。
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);
}