Java输出所有根结点到叶子结点的路径及其路径长度
时间: 2023-12-29 19:04:31 浏览: 36
可以使用递归来实现输出所有根结点到叶子结点的路径及其路径长度。以下是一个示例的Java代码:
```java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public class BinaryTreePaths {
public static void printPaths(TreeNode root) {
int[] path = new int[1000]; // 用于保存路径节点值
printPathsHelper(root, path, 0);
}
private static void printPathsHelper(TreeNode node, int[] path, int pathLen) {
if (node == null) {
return;
}
// 将当前节点添加到路径中
path[pathLen] = node.val;
pathLen++;
// 当前节点为叶子节点,输出路径
if (node.left == null && node.right == null) {
printArray(path, pathLen);
} else {
// 遍历左子树和右子树
printPathsHelper(node.left, path, pathLen);
printPathsHelper(node.right, path, pathLen);
}
}
private static void printArray(int[] path, int pathLen) {
System.out.print("路径: ");
for (int i = 0; i < pathLen; i++) {
System.out.print(path[i] + " ");
}
System.out.println("路径长度: " + pathLen);
}
public static void main(String[] args) {
// 构造二叉树
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(7);
// 输出所有根结点到叶子结点的路径及其路径长度
printPaths(root);
}
}
```
运行以上代码,将会输出以下结果:
```
路径: 1 2 4 路径长度: 3
路径: 1 2 5 路径长度: 3
路径: 1 3 6 路径长度: 3
路径: 1 3 7 路径长度: 3
```