赞
踩
题目:
通常使用多行的节点、父节点表示一棵树,比如
西安 陕西
陕西 中国
江西 中国
中国 亚洲
泰国 亚洲
输入一个节点之后,请打印出来树中他的所有下层节点
输入描述
第一行输入行数,下面是多行数据,每行以空格区分节点和父节点
接着是查询节点
输出描述
输出查询节点的所有下层节点。以字典序排序Q
备注
树中的节点是唯一的,不会出现两个节点,是同一个名字
示例1:
输入
5
b a
c a
d c
e c
f d
c
输出
d
e
f
题解:
题目不难,就是构建一个树状的数据结构,只是遍历打印的时候需要注意下,如果子节点有多重树的话,先打印子节点,再打印子节点的子节点。
代码:
- import java.util.*;
-
- public class TreeInfo {
- public static void main(String[] args) {
-
- Map<String, Tree> treeMap = new HashMap<>();
- Scanner sc = new Scanner(System.in);
-
- int lines = Integer.valueOf(sc.nextLine());
- for (int i = 0; i < lines; i++) {
- String[] treesInfo = sc.nextLine().split(" ");
- Tree tree = new Tree(treesInfo[1]);
- String child = treesInfo[0];
- if (treeMap.containsKey(tree.getParent())) {
- tree = treeMap.get(treesInfo[1]);
- tree.allChildRen(child);
- } else {
- tree.allChildRen(child);
- }
- treeMap.put(treesInfo[1], tree);
- }
-
- String treeNode = sc.nextLine();
- List<String> nextNodes = new ArrayList<>();
-
- printChild(treeNode, treeMap, nextNodes);
- }
-
- private static void printChild(String node, Map<String, Tree> treeMap, List<String> nextNodes) {
- List<String> children = treeMap.get(node).getChildren();
- for (String child : children) {
- System.out.println(child);
- if (treeMap.containsKey(child)) {
- nextNodes.add(child);
- }
- }
- if (nextNodes.size() > 0) {
- String newNode = nextNodes.get(0);
- nextNodes.remove(0);
- printChild(newNode, treeMap, nextNodes);
- }
- }
-
- private static class Tree {
- String parent;
- List<String> children;
-
- public Tree(String parent) {
- this.parent = parent;
- children = new ArrayList<>();
- }
-
- public String getParent() {
- return parent;
- }
-
- public void setParent(String parent) {
- this.parent = parent;
- }
-
- public List<String> getChildren() {
- return children;
- }
-
- public void setChildren(List<String> children) {
- this.children = children;
- }
-
- private void allChildRen(String child) {
- if (this.children != null && this.children.contains(child)) {
- return;
- } else {
- this.children.add(child);
- }
- }
- }
- }
验证:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。