Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

연결 목록을 사용하여 이진 검색 트리를 구현하는 C++ 프로그램

<시간/>

다음은 연결 목록을 사용하여 이진 검색 트리를 구현하는 C++ 프로그램입니다.

함수 및 유사 코드

알고리즘

시작 트리의 노드를 입력으로 사용합니다. 데이터 d, 왼쪽 포인터 l 및 오른쪽 r을 입력으로 받는 구조 nod를 만듭니다. 트리에 노드를 삽입하는 함수 create()를 만듭니다. c =0을 노드 수로 초기화합니다. while 루프를 c <6까지 수행:루트를 입력합니다. 노드의 값을 입력하고 루트보다 크면 오른쪽으로, 그렇지 않으면 왼쪽으로 입력합니다. 왼쪽 – 루트 – 오른쪽과 같이 노드를 순서대로 순회하는 inorder() 함수를 만듭니다. Root – Left – Right와 같이 preorder로 노드를 순회하는 preorder() 함수를 만듭니다. postorder() 함수를 생성하여 노드를 다음과 같이 선주문으로 순회합니다. Left – Right – Root main()에서 함수를 호출하고 결과를 인쇄합니다.End

예시 코드

#include 네임스페이스 std;struct nod { nod *l, *r; int d;}*r =NULL, *p =NULL, *np =NULL, *q;void create() { int v,c =0; while (c <6) { if (r ==NULL) { r =새로운 끄덕임; cout<<"루트 노드의 값을 입력\n"; 신>>r->d; r->r =NULL; r->l =NULL; } 그렇지 않으면 { p =r; cout<<"노드 값을 입력\n"; 신>>v; while(true) { if (vd) { if (p->l ==NULL) { p->l =새로운 끄덕임; p =p->l; p->d =v; p->l =NULL; p->r =NULL; cout<<"왼쪽에 값을 입력했습니다\n"; 부서지다; } else if (p->l !=NULL) { p =p->l; } } else if (v>p->d) { if (p->r ==NULL) { p->r =새로운 끄덕임; p =p->r; p->d =v; p->l =NULL; p->r =NULL; cout<<"오른쪽에 값을 입력했습니다\n"; 부서지다; } else if (p->r !=NULL) { p =p->r; } } } } C++; }} 무효 inorder(nod *p) { if (p !=NULL) { inorder(p->l); cout<d<r); }}무효 사전 주문(nod *p) { if (p !=NULL) { cout<d<l); 선주문(p->r); }} 사후 주문 무효(nod *p) { if (p !=NULL) { 사후 주문(p->l); 포스트 오더(p->r); cout<d< 

출력

루트 ​​노드의 값을 입력7노드6의 값을 입력하십시오.왼쪽에 입력한 노드4값을 입력하십시오.노드3의 값을 입력하십시오.왼쪽에 입력한 노드2의 값을 입력하십시오.노드1의 값을 입력하십시오.왼쪽에 입력한 값을 입력하십시오.