From d587c97e0c3761fcdcd1b56ca3a7277ce379ecb6 Mon Sep 17 00:00:00 2001 From: bala <13452927+rfgsdhshgfh@user.noreply.gitee.com> Date: Sat, 13 Jan 2024 15:30:45 +0000 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=8C=E5=8F=89=E6=A0=91?= =?UTF-8?q?=E7=9A=84=E5=90=84=E7=A7=8D=E5=9F=BA=E6=9C=AC=E8=BF=90=E7=AE=97?= =?UTF-8?q?=E7=9A=84=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: bala <13452927+rfgsdhshgfh@user.noreply.gitee.com> --- ...7\347\232\204\347\256\227\346\263\225.cpp" | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 "2224020152/\345\256\236\347\216\260\344\272\214\345\217\211\346\240\221\347\232\204\345\220\204\347\247\215\345\237\272\346\234\254\350\277\220\347\256\227\347\232\204\347\256\227\346\263\225.cpp" diff --git "a/2224020152/\345\256\236\347\216\260\344\272\214\345\217\211\346\240\221\347\232\204\345\220\204\347\247\215\345\237\272\346\234\254\350\277\220\347\256\227\347\232\204\347\256\227\346\263\225.cpp" "b/2224020152/\345\256\236\347\216\260\344\272\214\345\217\211\346\240\221\347\232\204\345\220\204\347\247\215\345\237\272\346\234\254\350\277\220\347\256\227\347\232\204\347\256\227\346\263\225.cpp" new file mode 100644 index 00000000..5f7e9e48 --- /dev/null +++ "b/2224020152/\345\256\236\347\216\260\344\272\214\345\217\211\346\240\221\347\232\204\345\220\204\347\247\215\345\237\272\346\234\254\350\277\220\347\256\227\347\232\204\347\256\227\346\263\225.cpp" @@ -0,0 +1,125 @@ +#include +#include +#define MaxSize 100 +typedef char ElemType; +typedef struct node +{ + ElemType data; + struct node *lchild; + struct node *rchild; + +}BTNode; +void CreateBTree(BTNode *&b,char *str) +{ + BTNode * St[MaxSize],*p; + int top=-1,k,j=0;char ch; + b=NULL; + ch=str[j]; + while(ch!='\0') + { + switch(ch) + { + case'(':top++;St[top]=p;k=1;break; + case')':top--;break; + case',':k=2;break; + + default:p=(BTNode *)malloc(sizeof(BTNode)); + p->data=ch;p->lchild=p->rchild=NULL; + if(b==NULL) + b=p; + else + { + switch(k) + { + case 1:St[top]->lchild=p;break; + case 2:St[top]->rchild=p;break; + } + } + } + j++;ch=str[j]; + } +} +void DestroyBTree(BTNode *&b) +{ + if(b!=NULL) + { + DestroyBTree(b->lchild); + DestroyBTree(b->rchild); + free(b); + } +} +BTNode *FindNode(BTNode *b,ElemType x) +{ + BTNode *p; + if(b==NULL) + return NULL; + else if(b->data==x) + return b; + else + { + p=FindNode(b->lchild,x); + if(p!=NULL) + return p; + else + return FindNode(b->rchild,x); + } +} +BTNode *LchildNode(BTNode *p) +{ + return p->lchild; + +} +BTNode *RchildNode(BTNode *p) +{ + return p->rchild; +} +int BTHeight(BTNode *b) +{ + int lchildh,rchildh; + if(b==NULL)return(0); + else + { + lchildh=BTHeight(b->lchild); + rchildh=BTHeight(b->rchild); + return(lchildh>rchildh)?(lchildh+1):(rchildh+1); + } +} +void DispBTree(BTNode *b) +{ + if(b!=NULL) + { + printf("%c",b->data); + if(b->lchild!=NULL||b->rchild!=NULL) + { + printf("("); + DispBTree(b->lchild); + if(b->rchild!=NULL)printf(","); + DispBTree(b->rchild); + printf(")"); + } + } +} +int main() +{ + BTNode *b,*p,*lp,*rp;; + printf("二叉树的基本运算如下:\n"); + printf(" (1)创建二叉树\n"); + CreateBTree(b,"A(B(D,E(H(J,k(L,M(,N))))),C(F,G(,I)))"); + printf(" (2)输出二叉树:");DispBTree(b);printf("\n"); + printf(" (3)H结点:"); + p=FindNode(b,'H'); + if(p!=NULL) + { lp= LchildNode(p); + if(lp!=NULL)printf("左孩子为%c",lp->data); + else printf("无左孩子"); + rp=RchildNode(p); + if(rp!=NULL) printf("右孩子为%c",rp->data); + else printf("无右孩子"); + + } + printf("\n"); + printf(" (4)二叉树b的高度:%d\n",BTHeight(b)); + printf(" (5)释放二叉树b\n"); + DestroyBTree(b); + return 1; +} -- Gitee