두 갈래 나무의 구축, 옮겨다니는 간단한 코드

1673 단어 c 언어 기초
코드는 매우 간단합니다. ubuntu 가상 기기에서 문자를 입력하면 getchar로 문자+리턴을 받을 수 있기 때문에 어떻게 없애야 할지 모르겠기 때문에strcmp+정적 데이터 i를 결합하여 노드에 값을 부여합니다.
free가 없으면 이 습관은 정말 좋지 않다.but는 프로그램이 간단하기 때문에 프로그램이 실행된 후에 시스템은free에게 이 프로세스malloc에서 나오는 공간을 줄 것이다. 간단한 코드는 시스템에 영향을 주지 않는다. 만약에 대형 시스템 코드라면 위험이 존재한다.
#include 
#include 
#include 

typedef struct BiTNode_s{
	int data;
	struct BiTNode_s *LChild;
	struct BiTNode_s *RChild;
}BiTNode;

static int i = 0;
BiTNode* CreateTree()
{
	char a[10];
	BiTNode *Tree;
	scanf("%s",a);
	if(!(strcmp("quit",a))){
		Tree = NULL;
		return Tree;
	}

	Tree = (BiTNode *)malloc(sizeof(BiTNode));
	if(!Tree){
		return Tree;
	}
	Tree->data = i++;
	Tree->LChild = CreateTree();
	Tree->RChild = CreateTree();

	return Tree;
}

int pprintf(BiTNode *Tree)
{
	if(Tree == NULL){ 
		//printf("TREE is NULL!
"); return 0; } printf("("); printf("%d",Tree->data); if(Tree->LChild) pprintf(Tree->LChild); if(Tree->RChild) pprintf(Tree->RChild); printf(")"); return 0; } int PreOrder(BiTNode *Tree) // { if(Tree){ printf("%4d",Tree->data); PreOrder(Tree->LChild); PreOrder(Tree->RChild); } } int MidOrder(BiTNode *Tree) // { if(Tree){ PreOrder(Tree->LChild); printf("%4d
",Tree->data); PreOrder(Tree->RChild); } } int main(void) { BiTNode *Tree; Tree = CreateTree(); if(!Tree){ printf("root is null!
"); return 0; } PreOrder(Tree); printf("
"); MidOrder(Tree); pprintf(Tree); return 0; }

좋은 웹페이지 즐겨찾기