二叉树的最大深度

谁践踏了优雅 2022-02-28 13:34 353阅读 0赞

题目描述
给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7],

  1. 3
  2. / \
  3. 9 20
  4. / \
  5. 15 7

返回它的最大深度 3 。

TreeNode

  1. class TreeNode {
  2. int val;
  3. public TreeNode(int val) {
  4. this.val = val;
  5. }
  6. TreeNode left;
  7. TreeNode right;
  8. }

思路1:递归

  1. public int maxDepth(TreeNode root) {
  2. if(root != null) {
  3. int leftMax = maxDepth(root.left);
  4. int rightMax = maxDepth(root.right);
  5. return Math.max(leftMax, rightMax)+1;
  6. }else {
  7. return 0;
  8. }
  9. }

思路2:使用队列进行迭代

  1. public int maxDepth(TreeNode root) {
  2. //Pair 为jdk1.8新增的util类
  3. Queue<Pair<TreeNode, Integer>> queue = new LinkedList<Pair<TreeNode,Integer>>();
  4. int max =0;
  5. if(root != null) {
  6. queue.add(new Pair<TreeNode, Integer>(root, 1));
  7. }
  8. while(!queue.isEmpty()) {
  9. Pair<TreeNode, Integer> pair = queue.poll();
  10. TreeNode node = pair.getKey();
  11. int curDepth = pair.getValue();
  12. if(node != null) {
  13. max = Math.max(max, curDepth);
  14. queue.add(new Pair<TreeNode, Integer>(node.left, curDepth + 1));
  15. queue.add(new Pair<TreeNode, Integer>(node.right, curDepth + 1));
  16. }
  17. }
  18. return max;
  19. }

发表评论

表情:
评论列表 (有 0 条评论,353人围观)

还没有评论,来说两句吧...

相关阅读

    相关 深度

    [ 二叉树的最大深度][Link 1] 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节

    相关 深度

    [104. 二叉树的最大深度][104.] 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点

    相关 深度

    题目描述 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树

    相关 深度

    /给定一个二叉树,找出其最大深度。 // 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 // 说明: 叶子节点是指没有子节点的节点。 // /...