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) { } }
树的孩子链表表示法
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:猜数游戏代码--图形界面
下一篇:树的双亲表示法
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
简单的尾插法实现单链表
尾插法建立单链表
结点 头结点 链表 -
【数据结构】链式家族的成员——循环链表与静态链表
【数据结构】第二章——线性表(8)详细介绍了循环链表与静态链表的相关内容……
数据结构 C语言 循环链表 静态链表 -
树的三种表示法:双亲表示法、孩子表示法、孩子兄弟表示法
大佬博客传送门
结点 链表 数据