자바 트 리 데이터 구조 구현

2803 단어 데이터 구조
트 리 데이터 구 조 를 자바 로 구현 하려 면 세 가지 종류 가 필요 합 니 다.3 가지 유형 으로 쓰 는 것 은 코드 의 재 활용 성 을 높이 고 노드 와 노드 속성 간 의 결합 을 감소 하기 위해 서 입 니 다.1. Tree, 나무의 데이터 구 조 를 실현 하고 노드 를 조작 하 며 삭제 와 검 사 를 책임 집 니 다.2. Node, 노드 의 부자 노드 를 기록 하고 노드 속성 류 가 있 습 니 다. 3. NodeProp, 노드 와 관련 된 속성 을 기록 하고 구체 적 인 속성 을 검색 하 는 방법 을 제공 합 니 다.
노드 클래스 는 나무의 노드 클래스 입 니 다.노드 와 관련 된 작업 을 처리 하고 서브 노드 와 부모 노드 의 정 보 를 기록 하 며 노드 속성 을 처리 하 는 클래스 NodeProp 이 있 습 니 다.
public class Node {
	
	private Node parent;
	private ArrayList childrenNodes = null;
	
	private NodeProp mNodeProp = null;
	
	public Node(Node parent) {
		this.parent = parent;
		childrenNodes =  new ArrayList<>();
		mNodeProp = new NodeProp();
	}
	
	final public ArrayList getChildList(){
		return childrenNodes;
	}
	
	final public Node getParent(){
		return parent;
	}
	
	final public void addChild(Node node){
		childrenNodes.add(node);
	}
	
	final public void deleteChild(int index){
		childrenNodes.remove(index);
	}
	
	final public boolean hasChild(){
		
		if (childrenNodes.size() > 0) {
			return true;
		}
		
		return false;
	}
	
	final public int getChildrenSize(){
		return childrenNodes.size();
	}
	
	public Node getChild(int i){
		
		if (childrenNodes.size() - 1 >= i) {
			return childrenNodes.get(i);
		}
		
		return null;
	}
	
	//the property of the Node
	final public NodeProp getNodeProp(){
		return mNodeProp;
	}
}

NodeProp 클래스 는 각 노드 의 구체 적 인 속성 과 이 속성 에 대한 조작 방법 을 정의 합 니 다.
public class NodeProp {
	//default property
	final static int DEFAULT_ID = -1;

	
	private int id = DEFAULT_ID;
	
	public void setId(int id){
		this.id = id;
	}
	
	public int getId(){
		return this.id;
	}

	//search property
	public boolean SearchId(int id) {
		
		if (id == DEFAULT_ID) return false;
		
		System.out.println("this.id = " + this.id);
		System.out.println("id = " + id);
		return (id == this.id);
	}
	
}

Tree 류 는 트 리 데이터 구 조 를 실현 하고 검사 노드 를 추가 삭제 하 는 것 을 책임 집 니 다.
public class Tree {
	Node root = null;
	
	public Tree(){}
	
	 public void addNode(Node parent, Node newNode){
	        //     
	        if(null == parent){
	            if(null == root){
	                root = newNode;
	            }
	        }else{
	        	parent.addChild(newNode);
	        }
	 }
	 
	    /*      ID     */
	 	public Node searchId(int id){
	    	return searchId(root, id);
	    }
	 	
	    public Node searchId(Node node, int id){
	    	
	    	if (node == null) return null;	
	    	
	    	if (node.getNodeProp().SearchId(id)) {
				return node;
			}else {
				for (int i = 0; i < node.getChildrenSize(); i++) {
					searchId(node.getChild(i), id);
				}
			}
			
	        return null;
	    }
	    
	    public Node getRoot(){
	    	return root;
	    }
}

좋은 웹페이지 즐겨찾기