데이터 구조의 이 진 트 리 재 귀적 생 성, 재 귀적 옮 겨 다 니 기

2133 단어
// Tree.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdio.h"
#include "iostream"

using namespace std;

typedef struct node
{
	int data;
	struct node *lchild;
	struct node *rchild;
}BiTNode, *BiTree;

int CreateBiTree(BiTree &T);
int CreateBiTree(BiTree &T,int &index);
void PreOrder(BiTree root);
void InOrder(BiTree root);
void PostOrder(BiTree root);

int element[]={3,7,3,2,1,0,0,7,0,0,0,8,0,10,0,0,17,18,0,0,19,0,27,0,0};
static int index=0;
int _tmain(int argc, _TCHAR* argv[])
{
	
	BiTree tree;
	//         
	CreateBiTree(tree,index);
	printf("       
"); printf("
"); PreOrder(tree); printf("
"); printf("
"); InOrder(tree); printf("
"); printf("
"); PostOrder(tree); printf("
"); system("pause"); return 0; } // , int CreateBiTree(BiTree &T) { int data; scanf("%d",&data); if (data==0) // 0 { T=NULL; } else { T=(BiTree)malloc(sizeof(BiTNode)); if (!T) { return -1; } else { T->data=data; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } } return 1; } // , , int CreateBiTree(BiTree &T,int &index) { int data=element[index]; if (data==0) // 0 { T=NULL; } else { T=(BiTree)malloc(sizeof(BiTNode)); if (!T) { return -1; } else { T->data=data; CreateBiTree(T->lchild,++index); CreateBiTree(T->rchild,++index); } } return 1; } // void PreOrder(BiTree root) { if (root!=NULL) { printf("%3d",root->data); PreOrder(root->lchild); PreOrder(root->rchild); } } // void InOrder(BiTree root) { if (root!=NULL) { InOrder(root->lchild); printf("%3d",root->data); InOrder(root->rchild); } } // void PostOrder(BiTree root) { if (root!=NULL) { PostOrder(root->lchild); PostOrder(root->rchild); printf("%3d",root->data); } }

좋은 웹페이지 즐겨찾기