Import of java.util.ArrayList; Import java.util.LinkedList; Import java.util.Queue; public class Java { public static void main (String [] args) { Java the Java = new new Java (); bitTreeNode the root = Java.createTree (); System.out.println ( "preorder traversal:" ); Java.preorder (the root); System.out.println ( "\ n-preorder:" ); Java.inorder (the root); the System.out .println ( "\ n after preorder:" ); Java.lastorder(root); System.out.println ( "\ n traverse the level:"); ArrayList<Object> arrayList=Java.PrintFromTopToBottom(root); for (Object o:arrayList){ System.out.print(o); } } public bitTreeNode createTree(){ bitTreeNode d = new bitTreeNode('d',null,null); bitTreeNode e = new bitTreeNode('e',null,null); bitTreeNode f = new bitTreeNode('f',null,null); bitTreeNode g = new bitTreeNode('g',null,null); bitTreeNode b = new bitTreeNode('b',d,e); bitTreeNode c = new bitTreeNode('c',f,g); bitTreeNode a = new bitTreeNode('a',b,c); return a; } public ArrayList<Object> PrintFromTopToBottom(bitTreeNode root){ ArrayList<Object> arrayList=new ArrayList<>(); Queue<bitTreeNode> queue=new LinkedList<>(); if (root!=null){ queue.offer(root); } while (!queue.isEmpty()){ bitTreeNode node=queue.poll(); arrayList.add(node.val); if (node.lchild!=null) queue.offer(node.lchild); if (node.rchild!=null) queue.offer(node.rchild); } return arrayList; } public void preorder(bitTreeNode node){ if (node==null) return; System.out.print(node.val); preorder(node.lchild); preorder(node.rchild); } public void inorder(bitTreeNode node){ if (node==null) return; inorder(node.lchild); System.out.print(node.val); inorder(node.rchild); } public void lastorder(bitTreeNode node){ if (node==null) return; lastorder(node.lchild); lastorder(node.rchild); System.out.print(node.val); } } class bitTreeNode{ Object val; bitTreeNode lchild; bitTreeNode rchild; public bitTreeNode(Object val,bitTreeNode lchild,bitTreeNode rchild){ this.val=val; this.lchild=lchild; this.rchild=rchild; } }