수입 인 java.util.ArrayList; 수입 되는 java.util.LinkedList; 수입 java.util.Queue; 공용 클래스 자바 { 공공 정적 무효 메인 (문자열 []에 args) { 자바 자바 = 새로운 자바 (); bitTreeNode 루트 = Java.createTree (); 에서 System.out.println ( "前序遍历:" ); Java.preorder (루트); 에서 System.out.println ( "\ n을中序遍历:" ); Java.inorder (루트); 에서 System.out.println ( "\ n을后序遍历:" ); Java.lastorder (루트); 에서 System.out.println ( "\ n을层次遍历:" ); ArrayList를 <개체> ArrayList를 = Java.PrintFromTopToBottom (루트); 대한 (객체 O를 : ArrayList를) { System.out.print (O); } } 공개 bitTreeNode createTree () { bitTreeNode D = 새로운 bitTreeNode ( 'D' 널 , 널 ); bitTreeNode 전자 = 새로운 bitTreeNode ( 'E', 널 , 널 ); bitTreeNode의 F = 새로운 bitTreeNode ( 'F', 널 , 널 ); bitTreeNode g = 새로운 bitTreeNode ( 'g', 널 , 널 ); bitTreeNode B = 새로운 bitTreeNode ( 'B' , D, E); bitTreeNode C = 새로운 bitTreeNode ( 'C' , F, G); bitTreeNode = 새로운 bitTreeNode ( 'A' , B를, c); 반환 을; } 공공 ArrayList를 <개체> PrintFromTopToBottom (bitTreeNode 루트) { ArrayList를 <개체> ArrayList를 = 새로운 ArrayList를 <> (); 열<bitTreeNode> 큐 = 새 LinkedList의 <> (); 경우 (루트! = 예약 주문 (bitTreeNode 노드) { 널 (null) ) { queue.offer (루트); } 동안 (! queue.isEmpty ()) { bitTreeNode 노드 = queue.poll (); arrayList.add (node.val); 경우 (node.lchild! = null이 ) queue.offer (node.lchild); 경우 (node.rchild! = null이 ) queue.offer (node.rchild); } 반환 되는 ArrayList; } 공공 공극 경우 (노드 == 널 ) 창 ; System.out.print (node.val); (node.lchild) 예약 주문; (node.rchild) 예약 주문; } 공공 공극 (bitTreeNode 노드) {중위 경우 (노드 == 널 ) 창 ; (node.lchild) 중위; System.out.print (node.val); (node.rchild) 중위; } 공공 공극 lastorder (bitTreeNode 노드) { 경우 (노드 == 널 ) 창 ; lastorder (node.lchild); lastorder (node.rchild); System.out.print (node.val); } } 클래스 bitTreeNode는 { 발 객체; bitTreeNode의 lchild; bitTreeNode의 rchild; 공개 bitTreeNode {(계산해 bitTreeNode의 lchild, bitTreeNode의 rchild 개체) 이 .val = 브로 단계; 이 .lchild = lchild; 이 .rchild = rchild; } }