二叉树的实现
实现如下图所示的二叉树的前序,中序,后序
#include<stdio.h> #include<stdlib.h> typedef char BTDataType; typedef struct BinaryTreeNode { BTDataType data; struct BinaryTreeNode *left; struct BinaryTreeNode *right; }BTNode; void PrevOrder(BTNode *root); void InOrder(BTNode *root); void PostOrder(BTNode *root); int main() { BTNode* A=(BTNode*)malloc(sizeof(BTNode)); A->data='A'; A->left=A->right=NULL; BTNode* B=(BTNode*)malloc(sizeof(BTNode)); B->data='B'; B->left=B->right=NULL; BTNode* C=(BTNode*)malloc(sizeof(BTNode)); C->data='C'; C->left=C->right=NULL; BTNode* D=(BTNode*)malloc(sizeof(BTNode)); D->data='D'; D->left=D->right=NULL; BTNode* E=(BTNode*)malloc(sizeof(BTNode)); E->data='E'; E->left=NULL; E->right=NULL; A->left=B; A->right=C; B->left=D; B->right=E; PrevOrder(A); printf("\n"); InOrder(A); printf("\n"); PostOrder(A); printf("\n"); return 0; } void PrevOrder(BTNode *root) { if(root==NULL) { printf("NULL "); return ; } printf("%c ",root->data); PrevOrder(root->left); PrevOrder(root->right); } void InOrder(BTNode *root)//中序 { if(root==NULL) { printf("NULL "); return ; } InOrder(root->left); printf("%c ",root->data); InOrder(root->right); } void PostOrder(BTNode *root)//后序 { if(root==NULL) { printf("NULL "); return ; } PostOrder(root->right); PostOrder(root->left); printf("%c ",root->data); } 运行结果: