题目
给定一个二叉树root,返回其最大深度。
二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
输入:root = [3,9,20,null,null,15,7]输出:3
示例 2:
输入:root = [1,null,2]输出:2
提示:
- 树中节点的数量在
[0, 104]区间内。 -100 <= Node.val <= 100
题解
题解一(DFS后序遍历)
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public int maxDepth(TreeNode root) { if(root == null) return 0; return Math.max(maxDepth(root.left),maxDepth(root.right)) + 1; } }题解二(BFS层序遍历)
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public int maxDepth(TreeNode root) { if (root == null) return 0; List<TreeNode> queue = new LinkedList<>(); queue.add(root); List<TreeNode> tmp = new LinkedList<>(); int res = 0; while (!queue.isEmpty()) { tmp = new LinkedList<>(); for(TreeNode node : queue) { if (node.left != null) tmp.add(node.left); if (node.right != null) tmp.add(node.right); } queue = tmp; res++; } return res; } }