第104题:二叉树的最大深度

一. 问题描述

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

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

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

示例:

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

    3

    /  \

   9   20

        /  \

     15   7

返回它的最大深度 3 。

二. 解题思路

本题思路:采用递归+广度优先搜索的方式进行求解。

步骤一:构建递归函数(局部变量存储每一层的节点list)

步骤二:依取list的值,将新的子节点的值添加到newlist中,并返回+1.

步骤三:开始新的递归函数(newlist),直到newlist为空,则返回总计数。

三. 执行结果

执行用时 :1 ms, 在所有 java 提交中击败了90.50%的用户

内存消耗 :36.5 MB, 在所有 java 提交中击败了66.10%的用户

四. Java代码

class Solution {
    public int maxDepth(TreeNode root) {
           if(root==null) {
       return 0;
   }
   List<TreeNode> list=new ArrayList<TreeNode>();
   list.add(root);
   int result=Tree(list);
   return result;
    }
     public int Tree(List<TreeNode> list) {
        if(list.size()==0) {
            return 0;
        }
        
        List<TreeNode> dataList=new ArrayList<TreeNode>();
        for(int i=0;i<list.size();i++) {
            TreeNode tempNode=list.get(i);
            if(tempNode.left!=null) {
                dataList.add(tempNode.left);
            }
            if(tempNode.right!=null) {
                dataList.add(tempNode.right);
            }
        }
        return Tree(dataList)+1;
        
    }
}

猜你喜欢

转载自www.cnblogs.com/xiaobaidashu/p/11818521.html
今日推荐