树的广度优先插入

树的广度优先插入

在这里插入图片描述

  1. Tree.java
public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] arr = {1,4,7,2,43,12,66,43,21,87,67,54,32,11,0,55};
		
		Tree root = new Tree();
		root.value = arr[0];
		
		QueueTest<Tree> queue = new QueueTest<Tree>();
		queue.push(root);
		for(int i = 1; i < arr.length;) {
			Tree newtree = queue.get();
			
			Tree nodel = new Tree();
			nodel.value = arr[ i ];
			newtree.left = nodel;
			queue.push(nodel);
			
			if( i+1 < arr.length ) {
				Tree noder = new Tree();
				noder.value = arr[ i+1 ];
				newtree.right = noder;
				queue.push(noder);
			}else {
				break;
			}
			i += 2;
		}
		System.out.println(root);
		
	}

}

2.Tree.java

public class Tree {
	
	public int value;
	
	public Tree left;
	
	public Tree right;

	public int getValue() {
		return value;
	}

	public void setValue(int value) {
		this.value = value;
	}

	public Tree getLeft() {
		return left;
	}

	public void setLeft(Tree left) {
		this.left = left;
	}

	public Tree getRight() {
		return right;
	}

	public void setRight(Tree right) {
		this.right = right;
	}

	@Override
	public String toString() {
		return "Tree [value=" + value + ", left=" + left + ", right=" + right + "]";
	}

}

3.QueueTest

public class QueueTest< T > {


	private T[] data = (T[]) new Object[20];
	private int start = 0;
	private int end = 0;
	
	public void push(T newint) {
		if( end - start == data.length ) {
			T[] datanew = (T[]) new Object[ data.length * 2 ];
			for(int i = 0; i < data.length; i++) {
				datanew[i] = data[  ( start + i ) % data.length ];
			}
			start = 0;
			end = start + data.length;
			data = datanew;
		}
		data[ end % data.length ] = newint;
		end++;
	}
	public T get() {
		if( end == start ) {
			return null;
		}
		T result = data[start % data.length];
		start++;
		return result;
	}
}

结果截图:

在这里插入图片描述

发布了2 篇原创文章 · 获赞 0 · 访问量 27

猜你喜欢

转载自blog.csdn.net/weixin_43729205/article/details/103974489