Javaデータ構造とアルゴリズム――(58)二叉木の前順、中順、後順の遍歴を順次記憶する


完了シーケンスは、ツリーの前シーケンス、中シーケンス、後続ループを格納します.
一、コード
public class ArrayBinaryTreeDemo {

	public static void main(String[] args) {

		int[] arr = { 1, 2, 3, 4, 5, 6, 7 };
		ArrayBinaryTree arrayBinaryTree = new ArrayBinaryTree(arr);
		System.out.println("    ");
		arrayBinaryTree.preOrder();//      :1, 2, 4, 5, 3, 6, 7
		System.out.println("    :");
		arrayBinaryTree.infixOrder(0);//    :4, 2, 5, 1, 6, 3, 7
		System.out.println("    :");
		arrayBinaryTree.postOrder(0);//    :4, 5, 2, 6, 7, 3, 1
	}

}

//     ArrayBinaryTree  ,           
class ArrayBinaryTree {
	//     
	private int[] arr;//          

	//    
	public ArrayBinaryTree(int[] arr) {
		this.arr = arr;
	}

	//        preOrder   ,   preOrder   
	//    ,  ArrayBinaryTree     arrayBinaryTree        preOrder()
	//    ,        (index 0)  preOrder   
	public void preOrder() {
		this.preOrder(0);
	}

	//       ,              (   )
	/**
	 * 
	 * @param index               
	 */
	public void preOrder(int index) {
		// 1.       ,  arr.length == 0
		// arr == null,  arr        ,            
		// arr.length == 0,  arr             0
		if (arr == null || arr.length == 0) {
			System.out.println("    ,            ");
		}
		
		// 2.        ,        (   ), index       
		System.out.println(arr[index]);
		//       
		//     ,           
		if ((2 * index + 1) < arr.length) {
			preOrder(2 * index + 1);
		}
		//       
		//     ,           
		if ((2 * index + 2) < arr.length) {
			preOrder(2 * index + 2);
		}
	}

	//       ,              (   )
	/**
	 * 
	 * @param index               
	 */
	public void infixOrder(int index) {
		// 1.       ,   arr.length == 0
		if (arr == null || arr.length == 0) {
			System.out.println("    ,        ");
		}
		
		// 2.        ,       
		//       
		//        (2 * index + 1)    
		if ((2 * index + 1) < arr.length) {
			infixOrder(2 * index + 1);
		}
		//       
		System.out.println(arr[index]);
		//       
		//        (2 * index + 1)    
		if((2 * index + 2) < arr.length) {
			infixOrder(2 * index + 2);
		}
	}
	
	//      ,              (   )
	public void postOrder(int index) {
		// 1.       ,   arr.length == 0
		if(arr == null || arr.length == 0) {
			System.out.println("    ,        ");
		}
		
		// 2.        ,       
		//       
		//        (2 * index + 1)    
		if((2 * index + 1) < arr.length) {
			postOrder(2 * index + 1);
		}
		//      
		//       (2 * index + 2)    
		if((2 * index + 2) < arr.length) {
			postOrder(2 * index + 2);
		}
		//      (          )
		System.out.println(arr[index]);
	}
}

二、結果
    
1
2
4
5
3
6
74
2
5
1
6
3
74
5
2
6
7
3
1