Leetcode __104. 二叉树的最大深度

问题描述

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

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

    3
   / \
  9  20
    /  \
   15   7

返回它的最大深度 3 。

思路

  • 明确树已经建好,只需查深度即可
  • 对于每个节点处理相同的操作,压入栈,出栈的过程,递归调用
  • 树的最大深度即,左子树或者右子树最大深度,再加上根的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;
        }else if(root.left==null&&root.right==null){
            return 1;
        } else {
            return 1+Math.max(maxDepth(root.left),maxDepth(root.right));
        }
        }
    }

遇到的问题

  1. 审题要看清题中想让你做的是什么,是建立树还是,树已知
  2. if else要对应写好,要分析好执行的过程
  3. 左子树、右子树的深度求出来之后,要加上根节点的深度1

猜你喜欢

转载自blog.csdn.net/Growing_way/article/details/82378099