使用stream 构建树
时间: 2024-09-25 08:10:24 浏览: 26
在Java中,Stream API提供了一种简洁的方式来构建树形数据结构。Stream API并不直接支持创建树,但它可以用于操作集合并生成嵌套的数据结构,例如层次化的列表或树。构建树通常需要一些递归或自顶向下的策略。
以下是一个简单的例子,展示如何使用Stream构建一个二叉树节点的层级结构:
```java
import java.util.Arrays;
import java.util.stream.Collectors;
class TreeNode {
int value;
TreeNode left;
TreeNode right;
TreeNode(int value) {
this.value = value;
}
}
public TreeNode buildBinaryTree(int[] values) {
return Arrays.stream(values)
.map(TreeNode::new)
.collect(Collectors.toList())
.stream()
.reduce(BinaryTreeNode::new, (root, node) -> {
if (node.value < root.value) {
root.left = node;
} else {
root.right = node;
}
return root;
});
}
```
在这个例子中,`buildBinaryTree`函数接收一个整数数组,将每个元素转换为`TreeNode`,然后使用`Collectors.toList()`收集所有节点到一个列表。接着,通过`stream().reduce()`对这个列表进行排序,并将其连接成树状结构。
阅读全文