如何在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;
}
}
