节点表示:
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);
}
}
}