剑指offer55a 二叉树的深度
(直接看55b即可)
首先想到的肯定是dfs,暴力解法,挨个计数到底,看哪个最长就是哪个。
但是这样时间复杂度过于高。
是有更优的解法的。
用递归,二叉树的深度每层都会加一,所以root的就是max(左子树深度,右子树深度),然后递归求解即可。
其实想想可能只是比暴力解法好了那么一丢丢。
/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { public int TreeDepth(TreeNode root) { if(root==null) return 0; return Math.max(TreeDepth(root.left),TreeDepth(root.right))+1; } }
运行时间:14ms
占用内存:9304k

浙公网安备 33010602011771号