前言
二叉树的深度计算特别适合用递归计算方式。那么递归适合在什么场景使用?
1.必定要有一个明确的结束递归的条件
2.问题可以被分解成更小的、相同形式的子问题。
递归缺点:递归的空间复杂度较高,并且有堆栈溢出的风险,过多的方法调用会耗时较多,还存在一种重复计算问题。
实现原理
将二叉树的深度计算转换为子问题,就是二叉树的左子树和右子树的最大值+1.
具体代码实现
package test8;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
class Solution {
public int maxDepth(TreeNode root) {
if(root==null){
return 0;
}else{
int leftHeight=maxDepth(root.left);
int rightHeight=maxDepth(root.right);
return Math.max(leftHeight,rightHeight)+1;
}
}
public static void main(String[] args) {
Solution solution=new Solution();
TreeNode treeNode=new TreeNode(1);
treeNode.left=new TreeNode(2);
treeNode.left.left=new TreeNode(3);
treeNode.left.right=new TreeNode(4);
treeNode.right=new TreeNode(2);
treeNode.right.left=new TreeNode(4);
treeNode.right.right=new TreeNode(3);
int res=solution.maxDepth(treeNode);
System.out.println(res);
}
}
QA:待定