首先创建一个 Node 和一个树数据结构。
Node:
Node(String value)
Tree
Tree(Node node) : Creates a tree with root as node
Node getNode(Node node, String nodeToRetrive) nodeToRetrive will be a child of node
returns null if not found
Node addNode(Node node, String nodeToBeAdded) nodeToBeAdded will be added as a new child of node and the newly added Node would be returned
创建以 A 为根的树。
Node root=new Node("A");
Tree tree=new Tree(root);
将输入字符串拆分为“_”处的标记。例如,“A_AChild_furtherChild”将被拆分为“A”、“AChild”、“furtherChild”。
String s="A_AChild_furtherChild";
String[] tokens=s.split("_");
从第二个开始循环遍历令牌,在本例中为“A Child”并进行必要的处理。
Node node=tree.root; Node n;
for( i=1 ;i <tokens.length; i++){
n=getNode(node,tokens[i]);
if(n==null){
n=addNode(node,tokens[i]);
}
node=n;
}
可以使用上述循环构造整个树。
递归检索树中节点的值。
public void printTree(Node n, int level){
display level number of spaces and print the value held by Node n.
for(each of the children of n){
printTree(theChild, level+1)
}
}
上述递归方法初始调用方式如下:
printTree(root,0);