C++中序线索化二叉树
2015-05-05 21:12
141 查看
#include <iostream> using namespace std; typedef struct TBTNode { char data; int ltag,rtag; struct TBTNode * lchild; struct TBTNode * rchild; }TBTNode; TBTNode * initTBTNode() { TBTNode * p=(TBTNode*)malloc(sizeof(TBTNode)); p->lchild=0; p->rchild=0; p->ltag=0; p->rtag=0; return p; } TBTNode * initTBTree(TBTNode * p) { TBTNode * A=initTBTNode(); TBTNode * B=initTBTNode(); TBTNode * C=initTBTNode(); TBTNode * D=initTBTNode(); TBTNode * E=initTBTNode(); A->data='A'; B->data='B'; C->data='C'; D->data='D'; E->data='E'; A->lchild=B; A->rchild=C; B->rchild=D; C->lchild=E; p=A; return p; } void InThread(TBTNode *p,TBTNode *&pre) { if(p!=0) { InThread(p->lchild,pre); if(p->lchild==0) { p->lchild=pre; p->ltag=1; } if(pre!=0&&pre->rchild==0) { pre->rchild=p; pre->rtag=1; } pre=p; InThread(p->rchild,pre); } } TBTNode * First(TBTNode * p) { while(p->ltag==0) p=p->lchild; return p; } TBTNode * Next(TBTNode * p) { if(p->rtag==0) return First(p->rchild); else return p->rchild; } void Inorder(TBTNode * root) { for(TBTNode *p=First(root);p!=0;p=Next(p)) cout << p->data << " "; cout << endl; } void createInThread(TBTNode * root) { TBTNode * pre =initTBTNode(); if(root!=0) { InThread(root,pre); pre->rchild=0; pre->rtag=1; } } int main(int argc, char* argv[]) { TBTNode *p=initTBTNode(); p=initTBTree(p); TBTNode *pre=initTBTNode(); createInThread(p); Inorder(p); return 0; }
相关文章推荐
- 【C++】中序线索化二叉树及其遍历
- 【C++】后序线索化二叉树及其遍历
- 用c++实现二叉树的线索化
- 【C++】前序线索化二叉树及其遍历
- 线索化二叉树C++
- C++模板实现二叉树(六 AVL树基础与旋转)
- 二叉树的c++实现——递归的应用
- C++实现搜索二叉树
- C++ 推断一棵二叉树是否对称
- C++二叉树的实现
- C++中的树、二叉树、二叉树遍历、二叉树前序、中序、后序遍历相互求法
- 二叉树用C++实现
- C++创建二叉树与遍历(递归与迭代)
- 数据结构--二叉树(C++)
- c++ 递归版本遍历二叉树
- 二叉树的中序遍历线索化
- 第十一周 项目一 -二叉树算法验证(3)中序线索化二叉树的算法验证
- C++ 二叉树创建、遍历访问、删除
- 第十一周项目1——二叉树算法验证(3) 中序线索化二叉树的算法验证
- 项目1.3--中序线索化二叉树的算法验证