二叉树-二叉树的最大深度问题(4)

ゝ一世哀愁。 2024-03-30 08:54 191阅读 0赞

需求:

给定一棵树,请计算树的最大深度(树的根节点到最远叶子结点的最长路径上的结点数);
在这里插入图片描述

上面这棵树的最大深度为4。

实现:

API求最大深度:
public int maxDepth():计算整个树的最大深度
private int maxDepth(Node x):计算指定树x的最大深度
实现步骤:
1.如果根结点为空,则最大深度为0;
2.计算左子树的最大深度;
3.计算右子树的最大深度;
4.当前树的最大深度=左子树的最大深度和右子树的最大深度中的较大者+1
代码:

  1. //计算整个树的最大深度
  2. public int maxDepth() {
  3. return maxDepth(root);
  4. }
  5. //计算指定树x的最大深度
  6. private int maxDepth(Node x) {
  7. //1.如果根结点为空,则最大深度为0;
  8. if (x == null) {
  9. return 0;
  10. }
  11. int max = 0;
  12. int maxL = 0;
  13. int maxR = 0;
  14. //2.计算左子树的最大深度;
  15. if (x.left != null) {
  16. maxL = maxDepth(x.left);
  17. }
  18. //3.计算右子树的最大深度;
  19. if (x.right != null) {
  20. maxR = maxDepth(x.right);
  21. }
  22. //4.当前树的最大深度=左子树的最大深度和右子树的最大深度中的较大者+1
  23. max = maxL > maxR ? maxL + 1 : maxR + 1;
  24. return max;
  25. }
  26. //测试代码
  27. public class Test {
  28. public static void main(String[] args) throws Exception {
  29. BinaryTree<String, String> bt = new BinaryTree<>();
  30. bt.put("E", "5");
  31. bt.put("B", "2");
  32. bt.put("G", "7");
  33. bt.put("A", "1");
  34. bt.put("D", "4");
  35. bt.put("F", "6");
  36. bt.put("H", "8");
  37. bt.put("C", "3");
  38. int i = bt.maxDepth();
  39. System.out.println(i);
  40. }
  41. }

结果:

  1. 4

发表评论

表情:
评论列表 (有 0 条评论,191人围观)

还没有评论,来说两句吧...

相关阅读

    相关 深度

    [ 二叉树的最大深度][Link 1] 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节

    相关 深度

    [104. 二叉树的最大深度][104.] 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点

    相关 深度

    题目描述 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树

    相关 深度

    /给定一个二叉树,找出其最大深度。 // 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 // 说明: 叶子节点是指没有子节点的节点。 // /...