马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import java.util.*;
// 定义树节点类
class TreeNode {
int id;
int pid;
String name;
List children;
- public TreeNode(int id, int pid, String name) {
- this.id = id;
- this.pid = pid;
- this.name = name;
- this.children = new ArrayList<>();
- }
复制代码 }
public class TreeNodeConverter {
public static List convertToTree(List nodes) {
// 存储节点映射
Map<Integer, TreeNode> nodeMap = new HashMap<>();
// 存储根节点
List rootNodes = new ArrayList<>();
- // 首先将所有节点放入映射中
- for (TreeNode node : nodes) {
- nodeMap.put(node.id, node);
- }
- // 构建树结构
- for (TreeNode node : nodes) {
- int pid = node.pid;
- if (pid == 0) {
- // 如果父节点 ID 为 0,说明是根节点
- rootNodes.add(node);
- } else {
- // 找到父节点
- TreeNode parent = nodeMap.get(pid);
- if (parent != null) {
- parent.children.add(node);
- }
- }
- }
- return rootNodes;
- }
- public static void main(String[] args) {
- List<TreeNode> nodes = new ArrayList<>();
- nodes.add(new TreeNode(1, 0, "根节点"));
- nodes.add(new TreeNode(2, 1, "子节点1"));
- nodes.add(new TreeNode(3, 1, "子节点2"));
- nodes.add(new TreeNode(4, 2, "孙节点1"));
- nodes.add(new TreeNode(5, 2, "孙节点2"));
- nodes.add(new TreeNode(6, 3, "孙节点3"));
- nodes.add(new TreeNode(7, 3, "孙节点4"));
- nodes.add(new TreeNode(8, 4, "曾孙节点1"));
- nodes.add(new TreeNode(9, 4, "曾孙节点2"));
- nodes.add(new TreeNode(10, 5, "曾孙节点3"));
- List<TreeNode> tree = convertToTree(nodes);
- // 打印树结构
- printTree(tree, 0);
- }
- private static void printTree(List<TreeNode> nodes, int level) {
- for (TreeNode node : nodes) {
- StringBuilder indent = new StringBuilder();
- for (int i = 0; i < level; i++) {
- indent.append(" ");
- }
- System.out.println(indent + node.name);
- printTree(node.children, level + 1);
- }
- }
复制代码 }
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |