实现二叉树各种基本运算的算法

编程入门 行业动态 更新时间:2024-10-07 18:31:19

实现二叉树各种基本运算的<a href=https://www.elefans.com/category/jswz/34/1770096.html style=算法"/>

实现二叉树各种基本运算的算法

二叉树存储结构和二叉树中各种基本算法设计

(1) 创建二叉树;
(2) 输出二叉树;
(3) 输出‘H’结点的左右孩子结点值;
(4) 输出二叉树的高度;
(5) 释放二叉树。

#include<stdio.h>
#include<malloc.h>
#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;elsereturn 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;
}

我是不会飞的飞鸟,肝文不易, 如果文章对你有帮助就点赞关注支持一下,下次再见!

更多推荐

实现二叉树各种基本运算的算法

本文发布于:2024-02-06 13:07:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1748998.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法   二叉树

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!