zoukankan      html  css  js  c++  java
  • 树的孩子链表表示法

    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) {
    
    
    	}
    
    }
    

  • 相关阅读:
    hadoop-2.7.6源码学习之 -- HDFS_Client端FileSystem获取
    Hadoop伪分布式搭建
    Hadoop技术集
    spark2.0源码学习
    hive资料
    Wiki动画回顾系列序&&目录
    阴暗的底层阶级版罗密欧与朱丽叶——甲贺忍法帖
    【搬家】夏令营感想
    “破晓之战”星杯传说赛后复盘分析
    leetcode刷题总结一
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3752267.html
Copyright © 2011-2022 走看看