import java.util.LinkedList;
import java.util.List;
class MNode {
char data;
List children = new LinkedList();
public MNode() {
super();
}
}
class BNode {
char data;
BNode left;
BNode right;
public BNode(char data, BNode left, BNode right) {
super();
this.data = data;
this.left = left;
this.right = right;
}
}
public class MTreeToBTree {
public static BNode generateBNode(List mnodes, int start) {
if (mnodes.size() == start)
return null;
if (mnodes.size() == 0)
return null;
BNode bnode = new BNode(mnodes.get(start).data, generateBNode(mnodes
.get(start).children, 0), generateBNode(mnodes, start + 1));
return bnode;
}
public static BNode transform(MNode root) {
return new BNode(root.data, generateBNode(root.children, 0), null);
}
private static MNode nodea;
private static void initMTree() {
nodea = new MNode();
nodea.data = ‘a‘;
MNode nodeb = new MNode();
nodeb.data = ‘b‘;
MNode nodec = new MNode();
nodec.data = ‘c‘;
MNode noded = new MNode();
noded.data = ‘d‘;
MNode nodee = new MNode();
nodee.data = ‘e‘;
MNode nodef = new MNode();
nodef.data = ‘f‘;
MNode nodeg = new MNode();
nodeg.data = ‘g‘;
MNode nodeh = new MNode();
nodeh.data = ‘h‘;
nodea.children.add(nodeb);
nodea.children.add(nodec);
nodea.children.add(noded);
nodeb.children.add(nodee);
nodec.children.add(nodef);
noded.children.add(nodeg);
noded.children.add(nodeh);
}
private static void printBTreePreOrder(BNode root) {
if (root != null) {
System.out.print(root.data + " ");
printBTreePreOrder(root.left);
printBTreePreOrder(root.right);
}
}
private static void printBTreeInOrder(BNode root) {
if (root != null) {
printBTreeInOrder(root.left);
System.out.print(root.data + " ");
printBTreeInOrder(root.right);
}
}
private static void printBTreePostOrder(BNode root) {
if (root != null) {
printBTreePostOrder(root.left);
printBTreePostOrder(root.right);
System.out.print(root.data + " ");
}
}
public static void main(String[] args) {
initMTree();
BNode broot = transform(nodea);
printBTreePreOrder(broot);
System.out.println();
printBTreeInOrder(broot);
System.out.println();
printBTreePostOrder(broot);
}
}