树的孩子链表表示法

来源:互联网 发布:淘宝网店怎样上传宝贝 编辑:程序博客网 时间:2024/04/28 22:18
import tree.PTree.PTNode;//树的孩子链表表示法public class CTree<AnyType>{     int max=100; int n,root,parent,child; PLNode<AnyType> rootNode; CTNode<AnyType> firstChild; PLNode nodes[]=new PLNode[max]; class CTNode<AnyType>{              //孩子结点int Child;CTNode<AnyType> nextChild;public CTNode(int child){this.Child=child;nextChild=null;}}class PLNode<AnyType>{          //双亲结点AnyType data;CTNode<AnyType> firstChild;public PLNode(AnyType data){this.data=data;firstChild=null;}}public CTree(){rootNode=null;n=0;}public boolean isEmpty(){return n==0;} public int childCount(int idx){            //孩子个数 if(nodes[idx].firstChild==null){ return 0; } int count=1; CTNode p=nodes[idx].firstChild; while(p.nextChild!=null){ p=p.nextChild; count++; } return count;}public CTNode getChild(int n,int idx){        //获取第idx个孩子        if(childCount(n)<idx){        return null;        }CTNode p=nodes[n].firstChild;for(int i=1;i<idx;i++){p=p.nextChild;}return p;} public PLNode assign(AnyType data){       //生成一个双亲结点       PLNode newNode=new PLNode(data);       return newNode;    }  public CTNode ass(int child){  CTNode newChild=new CTNode(child);  return newChild;  }public void insert(AnyType data,int parent){             //添加if(parent==-1){                //根节点rootNode=new PLNode(data);nodes[0]=rootNode;n++;}else{nodes[n]=assign(data);CTNode newChild=new CTNode(n);        if(childCount(parent)==0){                           nodes[parent].firstChild=newChild;        }          getChild(parent,childCount(parent)).nextChild=newChild;        n++;}}public static void main(String[] args) {}}

原创粉丝点击