二叉树实战(四) - 二叉树最大深度问题

在 二叉树实战(二) - 二叉树的遍历方式 和 二叉树实战(三) - 二叉树层序遍历方式(广度优先遍历) 中,我们知道了如何对树进行广度优先遍历和深度优先遍历。

这里我们在之前的基础上再实现以下二叉树的最大深度的计算:

    public int maxDepth() {
        return maxDepth(root);
    }

    private int maxDepth(Node x) {
        if (x == null) {
            return 0;
        }
        int max = 0;
        int maxL = 0;
        int maxR = 0;
        // 计算x结点左子树的最大深度
        if (x.left != null) {
            maxL = maxDepth(x.left);
        }
        // 计算x结点右子树的最大深度
        if (x.right != null) {
            maxR = maxDepth(x.right);
        }
        // 比较左子树最大深度和右子树最大深度,取较大值+1即可
        max = maxL > maxR ? maxL + 1 : maxR + 1;
        return max;
    }

 

posted @ 2020-05-03 19:35  灰色飘零  阅读(88)  评论(0)    收藏  举报