# 树型布局坐标计算 **Repository Path**: localhost_liangbing/treepoint ## Basic Information - **Project Name**: 树型布局坐标计算 - **Description**: 计算树形结构的布局的节点坐标 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2019-09-10 - **Last Updated**: 2024-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 树型布局坐标计算 #### 介绍 计算树形结构的布局的节点坐标 #### 软件架构 java #### 使用说明 运行TreeUtil种main方法即可 ``` public static void main(String[] args) { TreeUtil tu = new TreeUtil(); tu.setStepY(100); tu.setStepX(100); // id 和 自己的treenode HashMap idNode = new HashMap(); // 根节点 TreeNode root = tu.CreateTreeNode("根节点", 0, null, 20);// type = 10 idNode.put("根节点", root); // 二层节点 for (int j = 0; j < 5; j++) // 五个下级 { TreeNode fwroot = idNode.get("根节点"); // 父节点是fw TreeNode secondNode = tu.CreateTreeNode("二层节点" + j, 1, fwroot, 21);// type=20 if (fwroot == null) { // 父id不存在时候跳过这个 continue; } fwroot.getChildren().add(secondNode);// 父节点的孩子集合加入这个节点 idNode.put("二层节点" + j, secondNode); // 三层节点 for (int i = 0; i < 2; i++) { // 父节点是 secondNode TreeNode thirdNode = tu.CreateTreeNode("三层节点" + j + "-" + i, 2, secondNode, 30); // type=30 if (secondNode == null) { // 父id不存在时候跳过这个 continue; } secondNode.getChildren().add(thirdNode);// 父节点的孩子集合加入这个节点 idNode.put("三层节点" + j + "-" + i, thirdNode); } } // 找到叶子节点序 ArrayList leafIndex = new ArrayList(); findLeaf(root, leafIndex); for (int i = 0; i < leafIndex.size(); i++) { tu.getLeafNodesList().add(idNode.get(leafIndex.get(i))); } // System.out.println(leafIndex); tu.draw(root); System.out.println(tu.getResult()); } ``` 一个根节点 五个二级节点 每个二级节点两个三级节点 ![输入图片说明](https://images.gitee.com/uploads/images/2019/0910/151049_442dfeee_2226959.png "console.png") ![输入图片说明](https://images.gitee.com/uploads/images/2019/0910/151103_f395e266_2226959.png "tree.png")