자바 트 리 데이터 구조 구현
2803 단어 데이터 구조
노드 클래스 는 나무의 노드 클래스 입 니 다.노드 와 관련 된 작업 을 처리 하고 서브 노드 와 부모 노드 의 정 보 를 기록 하 며 노드 속성 을 처리 하 는 클래스 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;
}
}