Java 按照树形结构打印 N 叉树
在我们完成一棵树的构建之后,如果我们想要看这棵树的结构,不像数组或者 List 等数据结构,我们可以非常方便地用各种方式将其中的所有元素打印出来,对于树而言,这个过程要麻烦得多,我们可以用各种遍历方式得到这棵树的结构,但是终究还是不够直观。
如果我们可以按照树的结构,将其打印出来就好了,那么本文就是一种实现这个目标的思路以供参考。
N 叉树的结构
本文中所用的树的结构是 LeetCode 上所用的树的结构,其定义如下:
public class Node {
public int val;
public List<Node> children;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
};
简单打印
以 {值,子数组}
的方式进行打印。
实现方式
复写 Node 类的 toString () 方法:
@Override
public String toString() {
return "{" + val + (children==null?"":", " + children) + '}';
}
打印效果
对于 N 叉树:
打印效果如下
{1, [{3, [{5}, {6}]}, {2}, {4}]}
对于 N 叉树:
打印效果如下:
{1, [{2}, {3, [{6}, {7, [{11, [{14}]}]}]}, {4, [{8, [{12}]}]}, {5, [{9, [{13}]}, {10}]}]}
目录层级打印
模拟目录层级的方式进行打印。
实现方式
public static void print(Node root) {
printHelper(root, "\t");
}
private static void printHelper(Node root, String start) {
if (root == null) {
return;
}
String mid = start.substring(0, start.lastIndexOf("\t")) + "└---";
System.out.println(mid + root.val);
if (root.children == null) {
return;
}
for (Node node : root.children) {
printHelper(node, start + "\t");
}
}
打印效果
对于 N 叉树:
打印效果如下
└---1
└---3
└---5
└---6
└---2
└---4
对于 N 叉树:
打印效果如下:
└---1
└---2
└---3
└---6
└---7
└---11
└---14
└---4
└---8
└---12
└---5
└---9
└---13
└---10
相关文章