104. Maximum Depth of Binary Tree
这道题和leetcode第102题没啥区别,通过对树进行遍历即可。设置一个list集合,每向下一层,就给该层编一个号,将编号放入集合。当层数大于等于list元素个数(总的层数)时,需要新加一个元素到list中,如果不是,继续遍历即可。程序如下:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int maxDepth(TreeNode root) {
List<Integer> re=new ArrayList<>();
if(root==null)
return 0;
helper(re,root,0);
return re.size();
}
public void helper(List<Integer> list,TreeNode root,int height) {
if(root==null)
return;
if(height>=list.size())
list.add(height);
helper(list,root.left,height+1);
helper(list,root.right,height+1);
}
}
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int maxDepth(TreeNode node) {
if(node == null)
return 0;
if(node.left == null && node.right == null) {
return 1;
}
int leftDepth = maxDepth(node.left);
int rightDepth = maxDepth(node.right);
return Math.max(leftDepth, rightDepth)+1;
}
}
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int maxDepth(TreeNode root) {
if(root == null) return 0;
// return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
Queue<TreeNode> q = new LinkedList<TreeNode>();
q.offer(root);
int depth = 0;
while(q.peek() != null){
depth++;
int len = q.size();
for(int i = 0; i < len; i++){
TreeNode node = q.poll();
if(node.left != null) q.offer(node.left);
if(node.right != null) q.offer(node.right);
}
}
return depth;
}
}