欢迎访问宙启技术站
智能推送

如何在Java中编写函数来查找一个二叉树的深度?

发布时间:2023-06-04 14:07:45

在Java中编写函数来查找一个二叉树的深度,需要遵循以下步骤:

1. 定义一个节点类表示二叉树的每一个节点,包括该节点的值、左右子节点和该节点在树中的深度等信息。

class Node {
    int value;
    Node left;
    Node right;
    int level; // 记录该节点在树中的深度
}

2. 定义一个函数来创建二叉树。可以使用递归的方式来实现。在创建每个节点时记录该节点的深度。

public static Node createTree(int[] nums, int index, int level) {
    if (index >= nums.length) {
        return null;
    }
    Node node = new Node();
    node.value = nums[index];
    node.level = level;
    node.left = createTree(nums, index * 2 + 1, level + 1);
    node.right = createTree(nums, index * 2 + 2, level + 1);
    return node;
}

3. 定义一个函数来计算二叉树的深度。可以使用递归的方式来实现。对于每个节点,比较其左右子树的深度,取较大值加上1即为该节点所在子树的深度。

public static int getDepth(Node root) {
    if (root == null) {
        return 0;
    }
    int leftDepth = getDepth(root.left);
    int rightDepth = getDepth(root.right);
    return Math.max(leftDepth, rightDepth) + 1;
}

完整代码:

class Node {
    int value;
    Node left;
    Node right;
    int level; // 记录该节点在树中的深度
}

public class BinaryTree {

    public static void main(String[] args) {
        int[] nums = {3, 9, 20, -1, -1, 15, 7};
        Node root = createTree(nums, 0, 0);
        int depth = getDepth(root);
        System.out.println("The depth of the binary tree is: " + depth);
    }

    public static Node createTree(int[] nums, int index, int level) {
        if (index >= nums.length) {
            return null;
        }
        Node node = new Node();
        node.value = nums[index];
        node.level = level;
        node.left = createTree(nums, index * 2 + 1, level + 1);
        node.right = createTree(nums, index * 2 + 2, level + 1);
        return node;
    }

    public static int getDepth(Node root) {
        if (root == null) {
            return 0;
        }
        int leftDepth = getDepth(root.left);
        int rightDepth = getDepth(root.right);
        return Math.max(leftDepth, rightDepth) + 1;
    }
}