一. 问题描述
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [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; } }