解法1:递归
public static int maxDepth(TreeNode root) {
// write code here
if (root == null) {
return 0;
}
return 1+Math.max(maxDepth(root.left),maxDepth(root.right));
}
解法二:队列
public static class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public static void main(String[] args) {
TreeNode treeNode = new TreeNode(3);
TreeNode treeNode2 = new TreeNode(9);
TreeNode treeNode3 = new TreeNode(20);
TreeNode treeNode4 = new TreeNode(15);
TreeNode treeNode5 = new TreeNode(7);
treeNode.left = treeNode2;
treeNode.right = treeNode3;
treeNode2.left = treeNode4;
treeNode2.right = treeNode5;
System.out.println(maxDepth(treeNode));
}
/*
* 使用队列来是实现层序遍历
*/
public static int maxDepth(TreeNode root) {
// write code here
if (root == null) {
return 0;
}
int count = 0;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
int elementSize = queue.size();
for (int i = 0; i < elementSize; i++) {
if (queue.element().left != null) {
queue.offer(queue.element().left);
}
if (queue.element().right != null) {
queue.offer(queue.element().right);
}
queue.poll();
}
count++;
}
return count;
}