二叉树-找最大(最小)深度

1.题目:给定一棵二叉树,求其最大深度/最小深度

最大深度:

最大深度是从根节点到最近叶子节点最长路径上的节点数量

最小深度:

最小深度是从根节点到最近叶子节点最短路径上的节点数量

2.题目分析:

最大深度:返回3

(1)如果二叉树为空,则返回0;

(2)如果二叉树不为空,则递归计算根结点的左孩子、右孩子的深度,取出最大值,然后+1就是该二叉树的最大深度;

二叉树-找最大(最小)深度_第1张图片

最小深度:返回2

(1)如果二叉树为空,则返回0;

(2)如果二叉树没有右(左)孩子,则二叉树最小深度 = 左(右)孩子深度+1;

 

二叉树-找最大(最小)深度_第2张图片

3.程序设计

递归思想

4.程序源代码

public class TreeDepth {
    //取得二叉树的最大深度
    public int maxDepth(TreeNode root){
        if(root == null){
            return 0;
        }
        return Math.max(maxDepth(root.left),maxDepth(root.right))+1;
    }

    //取得二叉树的最小深度
    public int minDepth(TreeNode root) {
        if(root == null){
            return 0;
        }
        if(root.left == null){
            return minDepth(root.right)+1;
        }
        if(root.right == null){
            return minDepth(root.left)+1;
        }
        return Math.min(minDepth(root.left),minDepth(root.right))+1;
    }

}

 

你可能感兴趣的:(数据结构,Java)