线索二叉树的应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

else { k=(*p)->lchild; (*p)->lchild=q; q->lchild=k; } } else { Insert_lchild(&(*p)->lchild,childl,child); Insert_lchild(&(*p)->rchild,childl,child); } } }
• void Creat(Bitree *p) • { • char ch=getchar(); • if(ch=='#') • (*p)=NULL; • else • { • *p=(Bitreenode *)malloc(sizeof(Bitreenode)); • (*p)->data=ch; • Creat(&(*p)->lchild); • Creat(&(*p)->rchild); • } • }
线索二叉树的应用
Leabharlann Baidu
计算机工程学院 软件1102班 陆剑波
线索二叉树的应用
要求: 实现线索二叉树建立、插入结点、删除结点以及恢复线 索的算法。 设计思想: 1.创建二叉树: A
B
C
D
E
程序的主要功能:
• • • • • 1.线索二叉树的建立 2.进行二叉树先序,中序,后序遍历 3.能算出二叉树的深度 4.对二叉树左结点的的删除 5.对二叉树左结点的插入
遇到的困难:
• 1.线索二叉树的插入和删除的情况太多,就中序线索二叉 树上的删除情况就有好几种,譬如:(1)被删结点 *r是叶结点,没有左子树和右子树(2)被删结点*r 仅有右子树,没有左子树(3)被删结点仅有左子树,没 有右子树 • 针对这种情况,我只对左子树进行了插入和删除操作
1.二叉树的建立
2.对找到的左子树进行删除
void Deletel(Bitree *p) { Bitree *t; t=p; if((*t)) { Deletel(&(*t)->lchild); Deletel(&(*t)->rchild); free(*t); } }
3.插入左结点
• • • • • • • • • • • • • • • void Insert_lchild(Bitree *p,char childl,char child) { Bitree q,k; if(*p) { if((*p)->data==childl) { q=(Bitree)malloc(sizeof(Bitree)); q->data=child; if(!(*p)->lchild) { (*p)->lchild=q; (*p)->lchild->lchild=NULL; (*p)->lchild->rchild=NULL; }
相关文档
最新文档