package language.learn;
public class TreeNode {
Object element;
int predepth;
public TreeNode firstChild;
public TreeNode nextSibling;
public TreeNode() {
}
public TreeNode(Object element,int predepth) {
this.element=element;
this.predepth=predepth;
}
public void listAll(){
listAll(this);
}
private void listAll(TreeNode node){
System.out.print(node);//首先输出该节点
//打印出兄弟节点
if(node.hasNextSibling()){
System.out.println();
for (int i = 0; i < node.nextSibling.predepth; i++) {
System.out.print("\t");
}
listAll(node.nextSibling);
}
//打印出子节点
if(node.hasFirstChild()){
System.out.println();
for (int i = 0; i < node.firstChild.predepth; i++) {
System.out.print("\t");
}
listAll(node.firstChild);
}
}
@Override
public String toString() {
return (String) element;
}
private boolean hasFirstChild(){
return this.firstChild!=null;
}
private boolean hasNextSibling(){
return this.nextSibling!=null;
}
}
测试方法
package language.learn.test;
import language.learn.TreeNode;
import org.junit.Test;
public class TestDemo {
@Test
public void testListAll(){
TreeNode t = new TreeNode("A",0);
TreeNode b = t.firstChild=new TreeNode("B",1);
TreeNode c = b.nextSibling=new TreeNode("C",1);
TreeNode d = c.nextSibling = new TreeNode("D",1);
TreeNode e = c.firstChild = new TreeNode("E",2);
TreeNode f = e.nextSibling = new TreeNode("F",2);
t.listAll();
}
}
输出一个树的结构包含缩进package language.learn;public class TreeNode { Object element; int predepth; public TreeNode firstChild; public TreeNode nextSibling; public TreeNode() { } public