public class DoubleLNode<T> {
private T value;
private DoubleLNode<T> leftNode;
private DoubleLNode<T> rightNode;
public DoubleLNode() {
}
public DoubleLNode(T value, DoubleLNode<T> leftNode, DoubleLNode<T> rightNode) {
this.value = value;
this.leftNode = leftNode;
this.rightNode = rightNode;
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
public DoubleLNode<T> getLeftNode() {
return leftNode;
}
public void setLeftNode(DoubleLNode<T> leftNode) {
this.leftNode = leftNode;
}
public DoubleLNode<T> getRightNode() {
return rightNode;
}
public void setRightNode(DoubleLNode<T> rightNode) {
this.rightNode = rightNode;
}
}
public class BinaryTreeSort {
public static void preSort(DoubleLNode rootNode){
if(rootNode == null){
return;
}
System.out.print(" ");
System.out.print(rootNode.getValue());
preSort(rootNode.getLeftNode());
preSort(rootNode.getRightNode());
}
public static void inSort(DoubleLNode rootNode){
if(rootNode == null){
return;
}
inSort(rootNode.getLeftNode());
System.out.print(" ");
System.out.print(rootNode.getValue());
inSort(rootNode.getRightNode());
}
public static void postSort(DoubleLNode rootNode){
if(rootNode == null){
return;
}
postSort(rootNode.getLeftNode());
postSort(rootNode.getRightNode());
System.out.print(" ");
System.out.print(rootNode.getValue());
}
public static void stepSort(DoubleLNode rootNode){
if(rootNode.getLeftNode()==null || rootNode.getRightNode()==null){
return;
}
System.out.print(" ");
System.out.print(rootNode.getValue());
stepSort(rootNode.getLeftNode());
stepSort(rootNode.getRightNode());
}
public static void createBinaryTree(DoubleLNode<Integer> node, int[] arr, int p, int r){
if(p>=r){
node.setValue(arr[p]);
return;
}
DoubleLNode<Integer> left = new DoubleLNode<Integer>();
node.setLeftNode(left);
if((r-p)>=2){
int q = p + (r-p)/2;
node.setValue(arr[q]);
createBinaryTree(left, arr, p, q-1);
DoubleLNode<Integer> right = new DoubleLNode<Integer>();
node.setRightNode(right);
createBinaryTree(right, arr, q+1, r);
}else{
node.setValue(arr[r]);
createBinaryTree(left, arr, p ,r-1);
}
}
public static void main(String[] args) {
int[] arr = new int[100];
for(int i=0;i<100;i++){
arr[i] = i+1;
}
DoubleLNode<Integer> root = new DoubleLNode<Integer>();
createBinaryTree(root, arr, 0, arr.length-1);
preSort(root);
System.out.println();
inSort(root);
System.out.println();
postSort(root);
System.out.println();
System.out.println("执行完成!");
}
}