이 진 트 리체인 메모리두루
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
이 결점 은 이 진 트 리 에서 가장 기본 적 인 요소 로 데이터 필드 와 포인터 필드 를 포함한다.
초기 화 및 할당
초기 화
BiTree myBiTree; //
InitTree(&myBiTree); //
우 리 는 이 진 트 리 뿌리 의 결점 을 가리 키 는 지침 을 사용 하여 이 진 트 리 를 표시 한다.주의해 야 할 것 은 이 진 트 리 의 초기 화 InitTree 는 포인터 가 가리 키 는 내용 이 아니 라 루트 포인터 자체 의 내용 을 바 꾸 었 기 때문에 파 라 메 터 를 전달 할 때 포인터 로 전달 하고 루트 포인터 의 지침, 즉 루트 포인터 의 주 소 를 전달 합 니 다.
Status InitTree(BiTree *T)
{
// *T .
if (*T == NULL) // , , .
{
return ERROR;
}
*T = NULL; // NULL.
return OK;
} // InitTree
값 을 부여 하 다
선번 순서에 따라 이 진 트 리 결점 대 입 입 입 니 다.
// ! *T , **T .
void CreateTree(BiTree *T, FILE *fp)
{
char ch = 0;
ch = fgetc(fp); // .
if (ch == '^') // '^' .
{
*T = NULL;
}
else
{
// .
*T = (BiTNode *)malloc(sizeof(BiTNode));
if (!*T)
{
exit(OVERFLOW);
}
(*T)->data = ch;
CreateTree(&((*T)->lchild), fp); // .
CreateTree(&((*T)->rchild), fp); // .
}
} // CreateTree
Create Tree 를 정의 할 때 두 겹 의 바 를 사용 하지 않 아 도 되 지만 InitTree 와 같은 이 유 는:
*T = NULL
이해 하기 가 &T = NULL
보다 편리 하 다. 이 진 트 리 를 수정 하지 않 고 직접 지침 을 전달 합 니 다.
앞 순서
Status PreOrderTraverse(BiTree T, Status (*Visit)(ElemType e))
{
if (T)
{
if (Visit(T->data))
{
if (PreOrderTraverse(T->lchild, Visit))
{
if (PreOrderTraverse(T->rchild, Visit))
{
return OK;
}
}
}
return ERROR;
}
else
{
return OK;
}
} // PreOrderTraverse
중간 순서
Status InOrderTraverse(BiTree T, Status (*Visit)(ElemType e))
{
if (T)
{
if (InOrderTraverse(T->lchild, Visit))
{
if (Visit(T->data))
{
if (InOrderTraverse(T->rchild, Visit))
{
return OK;
}
}
}
return ERROR;
}
else
{
return OK;
}
} // InOrderTraverse
후서
Status PostOrderTraverse(BiTree T, Status (*Visit)(ElemType e))
{
if (T)
{
if (PostOrderTraverse(T->lchild, Visit))
{
if (PostOrderTraverse(T->rchild, Visit))
{
if (Visit(T->data))
{
return OK;
}
}
}
return ERROR;
}
else
{
return OK;
}
} // PostOrderTraverse
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.