树的孩子链表表示法
2013-11-03 15:51
369 查看
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 .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 =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) { } }
相关文章推荐
- 版本控制软件
- Codeforces_359B_Permutation
- 简易版基于Java的Servlet容器实现
- IP转发时,包是怎么送到next-hop的?
- 《FilthyRichClients》读书笔记(一)-SwingのEDT
- 启动多个httpd(apache)进程
- C++中基本数据类型字节数及取值范围
- C++类单一继承学习笔记
- StringBuffer
- 排序 -- 归并排序
- android.widget.Gallery
- 在java-oracle中实现主键值的插入
- linux ss 替换netstat命令
- php补充安装扩展支持
- java poi 大批量数据处理,2007
- 瞬时响应:网站的高性能架构
- 什么是P问题、NP问题和NPC问题
- 图像处理-03-实现图像的旋转
- highcharts多个Y轴
- eclipse的debug