Java创建普通二叉树

节点表示:
class TreeNode
{
TreeNode lChild;//左孩子
TreeNode rChild;//右孩子
int data; //数据域
TreeNode(int x) { data = x; }
}

package easy;

import java.util.ArrayList;
import java.util.List;

class TreeNode
{
	TreeNode lChild;//左孩子
	TreeNode rChild;//右孩子
	int  data; //数据域
	TreeNode(int x) { data = x; }
}
public class JavaTree {

	static TreeNode root=null;     //根节点 
	private static List<TreeNode> datas;//存储所有的节点
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] a={0,1,2,3,4,5,6,7};
		//下面数组中元素等于-1,表示插入空节点
		int[] b={0,1,2,-1,-1,3,4};
		root=createTree(a);
		preorder(root);
	}
	private static TreeNode createTree(int[] a) {
		datas=new ArrayList<TreeNode>();
		for (int obj : a) {
			for (int obj : a) {
			//这样可以插入空节点
			if(obj==-1)
				datas.add(null); 
			else 
			    datas.add(new TreeNode(obj));
		}
		root=datas.get(0);//将第一个作为根节点
		for (int i = 0; i < a.length/2; i++) {
			datas.get(i).lChild=datas.get(i*2+1);
			if(i*2+2<datas.size()){//避免偶数的时候 下标越界
				datas.get(i).rChild=datas.get(i*2+2);
			}
		}
		return root;
	}
	//先序遍历
	public static void preorder(TreeNode root){
		if(root!=null){
			System.out.println(root.data);
			preorder(root.lChild);
			preorder(root.rChild);
		}
		
	}

}

猜你喜欢

转载自blog.csdn.net/qq_30122883/article/details/82946637
今日推荐