leetcode Maximum Depth of Binary Tree 树的深度

Maximum Depth of Binary Tree

Description
Given a binary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

解决方法


public class MaxDepthBinaryTree {
    public static void main(String[] args) {
        TreeNode r0 = new TreeNode(11);
        TreeNode r11 = new TreeNode(1);
        TreeNode r12 = new TreeNode(11);
        TreeNode r21 = new TreeNode(11);
        TreeNode r31 = new TreeNode(11);
        r0.left = r11;
        r0.right = r12;
        r11.left = r21;
        r21.left = r31;
        System.out.println(maxDepth(r0));
        System.out.println(maxDepth(r31));
        System.out.println(maxDepth(r11));
        System.out.println(maxDepth(r12));
        System.out.println(maxDepth(r21));

    }

    public static int maxDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
         if (root.left == null && root.right == null) {
         return 1;
         }
        int leftDepth = -1;
        int rightDepth = -1;

        if (root.left != null) {
            leftDepth = maxDepth(root.left)+1;
        }
        if (root.right != null) {
            rightDepth = maxDepth(root.right)+1;
        }

        if (leftDepth > rightDepth) {
            return leftDepth ;
        } else {
            return rightDepth ;
        }

    }

}

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
        val = x;
    }
}

Note

int leftDepth = -1;
int rightDepth = -1;

leftDepth 和 rightDepth 的取值 并不重要,取 <= 0 都可以

因为有 if 判断

最末端的节点 左子树 和右子树 都是null, 返回值都是 1

总结

空树到深度为0

只有一个节点的树,其深度为1

改进

public class Solution {
   public   int maxDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        // if (root.left == null && root.right == null) {
        // return 0;
        // }
        int leftDepth = 0;
        int rightDepth = 0;

        if (root.left != null) {
            leftDepth = maxDepth(root.left);
        }
        if (root.right != null) {
            rightDepth = maxDepth(root.right);
        }

        if (leftDepth > rightDepth) {
            return leftDepth +1;
        } else {
            return rightDepth +1;
        }

    }


}

**把 + 1 移到 返回值 里面

去掉 if 判断

int leftDepth = 0;
int rightDepth = 0;

返回值+1, 最底部的节点 返回 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值