JAvaはKフォークツリーと再帰と非再帰遍歴アルゴリズムを実現する
次のコード
import java.util.Stack;
/**
*
* @author Administrator
*
*/
class treenode {
private int data;
private treenode[] kNode;
public treenode(int data) {
super();
this.data = data;
}
/**
* @return the date
*/
public int getData() {
return data;
}
/**
* @param date
* the date to set
*/
public void setData(int data) {
this.data = data;
}
/**
* @return the kNode
*/
public treenode[] getkNode() {
return kNode;
}
/**
* @param kNode
* the kNode to set
*/
public void setkNode(treenode[] kNode) {
this.kNode = kNode;
}
}
public class k_tree {
public static void main(String[] args) {
// TODO Auto-generated method stub
treenode a = new treenode(1);
treenode b = new treenode(2);
treenode c = new treenode(3);
treenode d = new treenode(4);
treenode e = new treenode(5);
treenode f = new treenode(6);
treenode[] aNode = { b, c, d };
treenode[] bNode = { e, f };
a.setkNode(aNode);
b.setkNode(bNode);
System.out.println(" :");
displayTree(a);
System.out.println(" :");
displayTreeByStack(a);
}
// ;
static void displayTree(treenode root) {
if (root == null)
System.out.println(" ");
else {
if (root.getkNode() != null) {// ;
for (treenode tn : root.getkNode())
displayTree(tn);
}
System.out.println(root.getData());// ;
}
}
// ;
@SuppressWarnings({ "unchecked", "rawtypes" })
static void displayTreeByStack(treenode root) {
if (root == null)
System.out.println(" ");
else {
Stack allNode = new Stack();//
allNode.push(root);//
while (!allNode.isEmpty()) {//
treenode n = (treenode) allNode.pop();//
System.out.println(n.getData());
if (n.getkNode() != null) {//
for (treenode tn : n.getkNode())
allNode.push(tn);
}
}
}
}
}