C 언어 이 진 트 리 특성 상세 설명 및 인 스 턴 스 코드 찾기
1.이 진 트 리
모든 나무의 노드 에 최대 두 개의 노드 가 있 는 나 무 를 이 진 트 리 라 고 한다.
2.두 갈래 찾기 트 리
이 진 트 리 는 이 진 트 리 의 구조 에 따라 조직 되 고 성질 을 만족 시 킵 니 다.
한 노드 의 모든 왼쪽 트 리 의 노드 는 뚜껑 노드 보다 크 지 않 고 모든 오른쪽 트 리 의 노드 는 이 노드 보다 작 지 않다.
트 리 를 찾 는 작업 조회,삽입,삭제 등 작업 의 시간 복잡 도와 나무의 높이 가 정비례 하기 때문에 효율 적 인 트 리 를 구축 하 는 것 이 특히 중요 하 다.
트 리 옮 겨 다 니 기 찾기
선착순
나 무 를 찾 아 옮 겨 다 니 는 것 은 재 귀적 인 방법 으로 쉽게 이 루어 질 수 있다.
struct list
{
struct list *left;//
struct list *right;//
int a;//
};
void preorder(struct list *t)//t
{
if(t!=NULL)
{
printf("%d,",t->a);
preorder(t->left);
perorder(t->right);
}
}
중간 순서 로 옮 겨 다 닌 다.
struct list
{
struct list *left;//
struct list *right;//
int a;//
};
void preorder(struct list *t)//t
{
if(t!=NULL)
{
preorder(t->left);
printf("%d,",t->a);
perorder(t->right);
}
}
뒤 순 서 를 옮 겨 다 닌 다.
struct list
{
struct list *left;//
struct list *right;//
int a;//
};
void preorder(struct list *t)//t
{
if(t!=NULL)
{
preorder(t->left);
perorder(t->right);
printf("%d,",t->a);
}
}
트 리 검색키워드 k 를 지정 하여 검색 을 하고 결점 의 지침 을 되 돌려 줍 니 다.
struct list
{
struct list *left;//
struct list *right;//
int a;//
};
struct list * search(struct list *t,int k)
{
if(t==NULL||t->a==k)
return t;
if(t->a<k)
search(t->right);
else
search(t>left);
};
재 귀적 이지 않 은 형식 으로 찾 아 볼 수도 있 습 니 다.
struct list
{
struct list *left;//
struct list *right;//
int a;//
};
struct list * search(struct list *t,int k)
{
while(true)
{
if(t==NULL||t->a==k)
{
return t;
break;
}
if(t->a<k)
t=t->rigth;
else
t=t->left;
}
};
최대 값 과 최소 값 조회트 리 의 성질 에 따라 최소 값 이 가장 왼쪽 에 있 는 결점,최대 값 의 가장 오른쪽 에 있 는 결점 을 찾 을 수 있 기 때문에 직접 찾 을 수 있 습 니 다.
다음은 최대 값 의 예 입 니 다.
{
struct list *left;//
struct list *right;//
int a;//
};
struct lsit *max_tree(struct lsit *t)
{
while(t!=NULL)
{
t=t->right;
}
return t;
};
트 리 삽입 및 삭제 찾기삽입 과 삭 제 는 트 리 의 성질 을 파괴 할 수 없 기 때문에 성질 에 따라 트 리 에서 해당 하 는 위 치 를 찾 으 면 삽입 과 삭제 작업 을 할 수 있 습 니 다.
struct list
{
struct list *left;//
struct list *right;//
int a;//
};
void insert(struct list *root,struct list * k)
{
struct list *y,*x;
x=root;
while(x!=NULL)
{
y=x;
if(k->a<x->a)
{
x=x->left;
}
else
x=x->right;
}
if(y==NULL)
root=k;
else if(k->a<y->a)
y->left=k;
else
y->right=k;
}
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.