题目:
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
解答一:
用的土方法,水平遍历,每次装入时带上层级信息,这个方法和level Traversal一样。
代码:
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public class NewNode{
TreeNode node;
int level;
NewNode(TreeNode m,int l){
node = m;
level = l;
}
}
public int maxDepth(TreeNode root) {
if(root == null) return 0;
Queue<NewNode> nodeQueue = new LinkedList<NewNode>();
nodeQueue.offer(new NewNode(root,0));
int lastLevel = 1;
while(!nodeQueue.isEmpty()){
NewNode head = nodeQueue.poll();
if(head.level > lastLevel){
lastLevel = head.level;
}
if(head.node.left != null){
nodeQueue.add(new NewNode(head.node.left,lastLevel+1));
}
if(head.node.right != null){
nodeQueue.add(new NewNode(head.node.right,lastLevel+1));
}
}
return lastLevel;
}
}
解答二:(参考)
maxDepth = 子树高度+1
代码:
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int getDepth(TreeNode root,int originalDepth){
if(root == null)
return originalDepth;
else
return 1+Math.max(getDepth(root.left,originalDepth), getDepth(root.right,originalDepth));
}
public int maxDepth(TreeNode root){
return getDepth(root,0);
}
}