二叉树线索化问题
来源:互联网 发布:c语言预处理程序 编辑:程序博客网 时间:2024/05/17 04:27
在某人的帮助下,终于理清了二叉树线索后问题。
#include<iostream>
#include<vector>
using namespace std;
typedef struct node
{
int data;
int ltag;
int rtag;
struct node *lchild;
struct node *rchild;
}*bitree,binode;
bitree initree(binode *root)//创建树
{
bitree tree=root;
return tree;
}
binode *makenode(int item,binode *lchild,binode *rchild)
{
binode *pnode;
pnode=(binode *)malloc(sizeof(binode));
if(pnode)
{
pnode->data=item;
pnode->lchild=lchild;
pnode->ltag=0;
pnode->rchild=rchild;
pnode->rtag=0;
}
return pnode;
}
void midorder(bitree tree)
{
binode *pnode;
pnode=tree->lchild;
while(pnode!=tree)
{
while(pnode->ltag==0)
pnode=pnode->lchild;
cout<<pnode->data<<"->";
while(pnode->rtag==1&&pnode->rchild!=tree)
{
pnode=pnode->rchild;
cout<<pnode->data<<"->";
}
pnode=pnode->rchild;
}
}
bitree pre;
void bianli(bitree p)
{
if(p)
{
bianli(p->lchild);
if(p->lchild==NULL)
{
p->ltag=1;
p->lchild=pre;
}
if(p->rchild==NULL)
p->rtag=1;
if(pre->rtag==1)
pre->rchild=p;
pre=p;
bianli(p->rchild);
}
}
bitree InOrderThreading(bitree tree)
{
binode *head;
head=(binode *)malloc(sizeof(binode));
head->ltag=0;
head->rtag=1;
head->data=100;
head->lchild=tree;
pre=head;
bianli(head->lchild);
pre->rchild=head;
pre->rtag=1;
head->rchild=pre;
return head;
}
int main()
{
binode * n1 = makenode(2,NULL,NULL);
binode * n2 = makenode(1,NULL,n1);
binode * n3 = makenode(5,NULL,NULL);
binode * n4 = makenode(7,NULL,NULL);
binode * n5 = makenode(3,n2,NULL);
binode * n6 = makenode(6,n3,n4);
binode * n7 = makenode(4,n5,n6);
bitree tree=initree(n7);
tree=InOrderThreading(tree);
midorder(tree);
return 0;
}
- 二叉树线索化问题
- 线索化二叉树
- 二叉树线索化
- 线索化二叉树
- 线索化二叉树
- 线索化二叉树
- 线索化二叉树
- 线索化二叉树
- 二叉树线索化
- 线索化二叉树
- 线索化二叉树
- 二叉树线索化
- 线索化二叉树
- 线索化二叉树
- 线索化二叉树
- 线索化二叉树
- 二叉树线索化
- 线索化二叉树
- golang实现icmp中的ping功能
- CF Bayan 2015 Contest Warm Up B题 Strongly Connected City
- 手动释放linux缓存
- c++创建对象的两种方式
- Scala 学习笔记5(Collections)
- 二叉树线索化问题
- 装饰者模式
- STARTUPINFO结构体
- mysql在linux下修改mysql数据库文件位置
- QT应用程序添加图标
- 原码, 反码, 补码 详解
- ConcurrentHashMap之实现细节
- 不要点,我只是个抛物线
- scala 学习笔记 面向对象