java实现创建树

#java实现创建树
##以下是一个 Java 实现用递归创建树,并提供接口根据树的等级查找它所有上一级的节点 name,一直到根级,存在 list 数组中的示例代码:

public class TreeNode {
    private String name;
    private int level;
    private List<TreeNode> children;

    // 构造方法、getters 和 setters 略
}

public class TreeUtils {
    /**
     * 递归创建树
     *
     * @param nodes 待创建树的节点列表
     * @param level 当前节点的层数
     * @return 根节点
     */
    public static TreeNode createTree(List<TreeNode> nodes, int level) {
        TreeNode root = new TreeNode();
        root.setLevel(level);
        root.setName("Root"); // 根节点的名字可以自定义

        // 如果没有节点了,直接返回根节点
        if (nodes == null || nodes.isEmpty()) {
            return root;
        }

        List<TreeNode> children = new ArrayList<>();
        for (TreeNode node : nodes) {
            // 如果节点的层数等于当前层数,把它作为当前节点的子节点
            if (node.getLevel() == level) {
                children.add(node);
            }
        }

        // 递归创建子树
        for (TreeNode child : children) {
            TreeNode childNode = createTree(nodes, level + 1);
            child.getChildren().add(childNode);
        }

        root.setChildren(children);
        return root;
    }

    /**
     * 根据树的等级查找它所有上一级的节点 name,一直到根级
     *
     * @param node  要查找的节点
     * @param names 用于存放节点名称的 list
     */
    public static void findNodeNames(TreeNode node, List<String> names) {
        if (node == null) {
            return;
        }

        names.add(0, node.getName()); // 把节点名加入到 list 的最前面

        if (node.getLevel() == 0) { // 如果到了根节点,直接返回
            return;
        }

        // 递归查找上一级节点
        for (TreeNode parent : node.getParents()) {
            findNodeNames(parent, names);
        }
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值