Javaデータ構造とアルゴリズム――(58)二叉木の前順、中順、後順の遍歴を順次記憶する
17309 ワード
完了シーケンスは、ツリーの前シーケンス、中シーケンス、後続ループを格納します.
一、コード
二、結果
一、コード
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
7
:
4
2
5
1
6
3
7
:
4
5
2
6
7
3
1