写出计算一棵二叉树深度的算法(用二叉链存储结构),输出树的字符串表示形式,和其深度。(JAVA)
时间: 2024-12-12 20:28:06 浏览: 2
西南交通大学-数据结构第4次作业
在Java中,可以使用递归的方式来计算二叉树的深度。这里假设二叉链表存储的节点结构包含左孩子指针(left)、右孩子指针(right)以及值(value)。以下是计算深度和打印树的字符串表示形式的算法:
```java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
// 默认构造函数省略
}
public class BinaryTreeUtils {
public static int calculateDepth(TreeNode root) {
if (root == null) {
return 0; // 空节点深度为0
} else {
// 递归计算左子树和右子树的深度,取较大者加1
int leftDepth = calculateDepth(root.left);
int rightDepth = calculateDepth(root.right);
return Math.max(leftDepth, rightDepth) + 1;
}
}
public static String printInorder(TreeNode root) {
StringBuilder sb = new StringBuilder();
inorderTraversal(root, sb);
return sb.toString();
}
private static void inorderTraversal(TreeNode node, StringBuilder sb) {
if (node != null) {
inorderTraversal(node.left, sb); // 先遍历左子树
sb.append(node.val + " "); // 添加节点值
inorderTraversal(node.right, sb); // 再遍历右子树
}
}
public static void main(String[] args) {
// 创建并初始化你的二叉树实例
// ...
int depth = calculateDepth(root);
System.out.println("Tree depth: " + depth);
String treeString = printInorder(root);
System.out.println("Tree string representation: " + treeString);
}
}
```
在这个例子中,`calculateDepth`函数负责递归计算树的深度,而`printInorder`则是使用中序遍历来构建字符串表示形式。
阅读全文