단순 구조
링크 길이 알고리즘 가 져 오기
public int getSize() {
int num = 0;
if(head==null){//
}else{ //
num++;//
Node node=head.getNaxt(); //
while(node!=null){//
num++;//
node=node.getNaxt();//
}
}
return num;
}
노드 추가 방법: 두 결점 여 부 를 판단 해 야 합 니 다.
@Override
/**
*
*/
public void add(String date) {
Node node =new Node(date,null);
if(getSize()==0){//
head=node;
}else{
Node node1=get(getSize()-1);
node1.setNaxt(node);
}
}
/**
*
*/
@Override
public void add(int index, String date) {
Node node =new Node(date,null);
if(index<0||index>getSize()){//
try {
throw new Exception(" ");
} catch (Exception e) {
e.printStackTrace();
}
}else if(index==0){//
node.setNaxt(head);
head=node;
}else{//
Node node1=get(index-1);
Node node2=get(index);
node.setNaxt(node2);
node1.setNaxt(node);
}
}
노드 삭제 방법 은 삭제 할 노드 가 링크 에 있 는 지 판단 해 야 합 니 다.
/**
*
*/
@Override
public void del(String date) {
int i=fint(date);
if(i!=-1){//
get(i-1).setNaxt(get(i+1));//
}
}
/**
*
*/
@Override
public void del(int intdex) {
if(intdex<0||intdex>getSize()){//
try {
throw new Exception(" ");
} catch (Exception e) {
e.printStackTrace();
return;
}
}
//
Node node1=get(intdex-1);
Node node2=get(intdex+1);
node1.setNaxt(node2);
}
노드 찾기 방법: 링크 가 비어 있 는 지, 노드 가 링크 에 있 는 지 판단 해 야 합 니 다.
/**
*
*/
public String fint(int intdex) {
return get(intdex).getData();//
}
/**
*
*/
public int fint(String deta) {
int num=0;
Node node=head;
if(node.getData().equals(deta)){//
return num;//
}
while(!node.getData().equals(deta)&&node.getNaxt()!=null){//
num++;
node=node.getNaxt();
}
if(num==getSize()&&!node.getData().equals(deta)){//
try {
throw new Exception(" ");
} catch (Exception e) {
e.printStackTrace();
}
return -1;
}
else
return num;
}
특정한 노드 를 가 져 오 는 방법 은 링크 작업 의 핵심 위치 에 속 하 는 것 은 다른 방법의 기초 이다. 링크 가 비어 있 는 지, 색인 이 경 계 를 넘 었 는 지 판단 해 야 할 뿐만 아니 라
/**
*
*/
public Node get(int intdex){//
if(intdex<0){//
try {
throw new Exception(" ");
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
int count = 0;
// index 0 ,
if (count == intdex) {//
return head;
}
//
if (intdex < getSize()) {
// ,
Node node = head.getNaxt();
while (node != null) {
count++;
if (count == intdex) {
return node;
}
node = node.getNaxt();
}
} else {
// ,
try {
throw new Exception(" ");
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
두 갈래 나무:
미리 설 치 된 이 진 트 리 를 만 드 는 것 은 본질 적 으로 링크 를 실현 하 는 것 과 차이 가 많 지 않 습 니 다. 노드 에 색인 '포인터' 를 하나 더 추가 하 는 것 일 뿐 입 니 다. 먼저 모든 노드 를 하나의 고립 된 노드 로 예화 한 다음 에 일정한 순 서 를 통 해 노드 를 연결 합 니 다.이렇게 간단 한 이 진 트 리 를 만 들 수 있 습 니 다. 이 진 트 리 중에서 이 진 트 리, 완전 이 진 트 리 는 상대 적 으로 간단 합 니 다. 그러나 일반적인 이 진 트 리 는 어느 정도 어려움 이 있 습 니 다. 중간 어 딘 가 에 있 는 노드 의 득 도 는 1 입 니 다. 이것 은 매우 골 치 아 프 지만 우 리 는 이 를 완전 이 진 트 리 로 생각 하여 구축 할 수 있 습 니 다.도가 1 인 노드 에 특수 한 표지 로 빈 노드 와 이 노드 의 서브 트 리 를 대표 합 니 다.완전 이 진 트 리 를 만 들 때 우 리 는 모든 부모 노드 를 따로 나 올 수 있다. 그 중에서 마지막 부모 노드 는 부모 노드 에서 따로 나 와 마지막 (두) 개의 잎 을 처리 할 수 있다.
/**
*
*/
public void creadTree( ){
//
for(int i=0;i<array.length;i++){
TreeNode tNode=new TreeNode(array[i],null,null);
list.add(tNode);
}
// ,
for(int i=0;i<list.size()/2-1;i++){
//
list.get(i).setLNode(list.get(i*2+1));
//
list.get(i).setRNode(list.get(i*2+2));
}
//
list.get(list.size()/2-1).setLNode(list.get((list.size()/2-1)*2+1));
//
if((list.size()/2-1)*2+2<list.size()){
list.get(list.size()/2-1).setLNode(list.get((list.size()/2-1)*2+2));
}
}
나무의 역 주 행 은 재 귀 를 통 해 가장 간단 한 방법 이지 만 재 귀 에서 일정한 처리 재 귀 출구 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
하나의 단일 체인 테이블의 순환과 귀속 실현을 반전시키다텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.