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);
				}
			}
		}
	}
}