104. Maximum Depth of Binary Tree
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.
题目含义:找出二叉树的深度
方法一:递归
1 public int maxDepth(TreeNode root) { 2 return root == null ? 0 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; 3 }
方法二:BFS
1 public int maxDepth(TreeNode root) { 2 if(root == null) return 0; 3 Queue<TreeNode> queue = new LinkedList<>(); 4 queue.offer(root); 5 int count = 0; 6 while(!queue.isEmpty()) { 7 int size = queue.size(); 8 for (int i=size;i>0;i--) 9 { 10 TreeNode node = queue.poll(); 11 if(node.left != null) queue.offer(node.left); 12 if(node.right != null) queue.offer(node.right); 13 } 14 count++; 15 } 16 return count; 17 }
方法三:
1 public int maxDepth(TreeNode root) { 2 if(root == null) return 0; 3 Stack<TreeNode> stack = new Stack<>(); 4 Stack<Integer> value = new Stack<>(); 5 stack.push(root); 6 value.push(1); 7 int max = 0; 8 while(!stack.isEmpty()) { 9 TreeNode node = stack.pop(); 10 int temp = value.pop(); 11 max = Math.max(temp, max); 12 if(node.left != null) { 13 stack.push(node.left); 14 value.push(temp+1); 15 } 16 if(node.right != null) { 17 stack.push(node.right); 18 value.push(temp+1); 19 } 20 } 21 return max; 22 }