用java实现求二叉树最长路径的元素集合
时间: 2024-04-12 20:30:32 浏览: 70
用java实现二叉树的创建和遍历.doc
以下是使用 Java 实现求二叉树最长路径的元素集合的示例代码:
```java
import java.util.ArrayList;
import java.util.List;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
this.left = null;
this.right = null;
}
}
public class BinaryTreeLongestPath {
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);
// 求解最长路径的元素集合
List<Integer> longestPath = findLongestPath(root);
// 打印最长路径的元素集合
System.out.println("最长路径的元素集合: " + longestPath);
}
public static List<Integer> findLongestPath(TreeNode root) {
List<Integer> longestPath = new ArrayList<>();
if (root != null) {
List<Integer> leftPath = findLongestPath(root.left);
List<Integer> rightPath = findLongestPath(root.right);
// 比较左右子树的路径长度,取较长的路径
if (leftPath.size() > rightPath.size()) {
longestPath.addAll(leftPath);
} else {
longestPath.addAll(rightPath);
}
// 将根节点添加到最长路径中
longestPath.add(root.val);
}
return longestPath;
}
}
```
这段代码使用递归的方式求解二叉树的最长路径。我们首先创建一个 `TreeNode` 类来表示二叉树节点,然后在 `BinaryTreeLongestPath` 类中实现 `findLongestPath()` 方法来递归地寻找最长路径。最后,在 `main()` 方法中创建一棵二叉树,并打印最长路径的元素集合。
阅读全文