二叉树的操作(C language)

来源:互联网 发布:使用java制作电脑程序 编辑:程序博客网 时间:2024/06/16 07:13
#include<stdio.h>#include<stdlib.h>#include<malloc.h>#define ElemType char#define OK 0#define FALSE 1#define Status inttypedef struct BinTree{ElemType data;struct BinTree *right,*left;}BinTree;// Create a binary tree with root node treeStatus CreateBinTree(BinTree **tree){ElemType ch;ch = getchar();if(ch == '#')*tree = NULL;else{*tree = (BinTree *)malloc(sizeof(BinTree));(*tree)->data = ch;CreateBinTree(&(*tree)->left);CreateBinTree(&(*tree)->right);}return OK;}//preorder traversing bintreevoid PreOrder(BinTree *tree){if(tree){printf("%c",tree->data);PreOrder(tree->left);PreOrder(tree->right);}}void PostOrder(BinTree *tree){if(tree){PreOrder(tree->left);PreOrder(tree->right);printf("%c",tree->data);}}ElemType DepthBinTree(BinTree *tree){int h,lh,rh;if(tree == NULL)h = 0;else{lh = DepthBinTree(tree->left);rh = DepthBinTree(tree->right);if( lh >= rh)h = lh+1;elseh = rh+1;}return h;}ElemType NumOredeNode(BinTree *tree){int num=0;if(tree == NULL)return 0;elsenum = NumOredeNode(tree->left) + NumOredeNode(tree->right) + 1;return num;}int main(){int h,num;BinTree *T;CreateBinTree(&T);PreOrder(T);printf("\n");PostOrder(T);h = DepthBinTree(T);num = NumOredeNode(T);printf("%d\n",h);printf("%d\n",num);return 0;}

0 0
原创粉丝点击