package com.ycsoft.report.test.other; //多叉树 public class ManyNodeTree { // 树根 private ManyTreeNode root; // 构造函数 public ManyNodeTree() { root = new ManyTreeNode(); root.getData().setNodeName("root"); } // 构造函数 public ManyNodeTree(int key) { root = new ManyTreeNode(); root.getData().setKey(key); root.getData().setNodeName("root"); } // 遍历多叉树 public String iteratorTree(ManyTreeNode treeNode) { StringBuilder sb = new StringBuilder(); if (treeNode != null) { if ("root".equals(treeNode.getData().getNodeName())) { sb.append(treeNode.getData().getKey() + ","); } for (ManyTreeNode index : treeNode.getChildList()) { sb.append(index.getData().getKey() + ","); if (index.getChildList() != null && index.getChildList().size() > 0) { sb.append(iteratorTree(index)); } } } return sb.toString(); } public ManyTreeNode getRoot() { return root; } public void setRoot(ManyTreeNode root) { this.root = root; } // 构造多叉树 public static ManyNodeTree createTree() { // 用构造函数的值 ManyNodeTree tree = new ManyNodeTree(60); // 第一层的节点 ManyTreeNode node1 = new ManyTreeNode(40); ManyTreeNode node2 = new ManyTreeNode(50); ManyTreeNode node3 = new ManyTreeNode(30); tree.getRoot().getChildList().add(0, node1); tree.getRoot().getChildList().add(1, node2); tree.getRoot().getChildList().add(2, node3); // 第二层的节点 ManyTreeNode node21 = new ManyTreeNode(85); ManyTreeNode node22 = new ManyTreeNode(70); ManyTreeNode node23 = new ManyTreeNode(15); ManyTreeNode node24 = new ManyTreeNode(102); ManyTreeNode node25 = new ManyTreeNode(83); ManyTreeNode node26 = new ManyTreeNode(9); tree.getRoot().getChildList().get(0).getChildList().add(0, node21); tree.getRoot().getChildList().get(0).getChildList().add(1, node22); tree.getRoot().getChildList().get(0).getChildList().add(2, node23); tree.getRoot().getChildList().get(1).getChildList().add(0, node24); tree.getRoot().getChildList().get(1).getChildList().add(1, node25); tree.getRoot().getChildList().get(2).getChildList().add(0, node26); // 第三层的节点 ManyTreeNode node31 = new ManyTreeNode(15); ManyTreeNode node32 = new ManyTreeNode(20); ManyTreeNode node33 = new ManyTreeNode(100); ManyTreeNode node44 = new ManyTreeNode(60); tree.getRoot().getChildList().get(0).getChildList().get(0) .getChildList().add(0, node31); tree.getRoot().getChildList().get(0).getChildList().get(0) .getChildList().add(1, node32); tree.getRoot().getChildList().get(0).getChildList().get(0) .getChildList().add(2, node33); tree.getRoot().getChildList().get(0).getChildList().get(2) .getChildList().add(0, node44); return tree; } /** * @param args */ public static void main(String[] args) { ManyNodeTree testTree = ManyNodeTree.createTree(); String result = testTree.iteratorTree(testTree.getRoot()); System.out.println(result); } }