数据结构:中序线索二叉树
来源:互联网 发布:ps制作淘宝店招教程 编辑:程序博客网 时间:2024/05/21 20:08
//所谓线索二叉树无非是为了让原本指向NULL的节点指向一个具体的//已经存在的节点,逻辑上实现指针的无空指向的实现,下面是我中//序线索二叉树的实现。还是把先序线索二叉树与后序线索分开来写吧。#include<iostream>using namespace std;template<typename Type>struct Node{ Type data; bool rflags;//false为线。 bool lflags; Node<Type> *right; Node<Type> *left; Node(Type d = Type()) :data(d), right(NULL), left(NULL), lflags(false),rflags(false){}};template<typename Type>class MyTree{public: MyTree() :root(NULL){} void Create_lvr_lrv(Type *LVR,Type *LRV) { int n = strlen(LRV); Create_lvr_lrv(root,LVR,LRV,n); } void Create_Thread_V()//中序构造线索二叉树。 { Node<Type> *pr = NULL; Create_Thread_V(root, pr); Node<Type> *p = root; while (p->right != NULL) { p = p->right; } p->right = NULL; p->rflags = true; } void Printf_V() { Node<Type> *p = root; while (p->left != NULL) { p = p->left; } Printf_V(p); }private: void Printf_V(Node<Type> *t)//中序线索二叉树的打印。 { Node<Type> *p = t; while (p != NULL) { cout << p->data << " "; Node<Type>*m = p->right; if (p->rflags != true) { while (m != NULL && m->lflags != true) { m = m->left; } } p=m; } } void Create_Thread_V(Node<Type> *t, Node<Type> *&pr) { if (t == NULL) { return; } Create_Thread_V(t->left, pr); if (t->left== NULL) { t->left = pr; t->lflags = true; } if (pr!=NULL && pr->right ==NULL) { pr->right = t; pr->rflags = true; } pr = t; Create_Thread_V(t->right,pr); } void Create_lvr_lrv(Node<Type> *&t, Type *LVR, Type *LRV, int n) { if (n == 0)return; int i = 0; while (LRV[n - 1] != LVR[i])i++; t = new Node<Type>(LRV[n - 1]); Create_lvr_lrv(t->right,LVR+i+1,LRV+i,n-i-1); //根据中序及后序构造二叉树,此处我选择先构造右子树,然后才构造左子树。 Create_lvr_lrv(t->left,LVR,LRV,i); }private: Node<Type> *root;};int main(){ char LVR[] = "CBDAFEG"; char LRV[] = "CDBFGEA"; MyTree<char> mt; mt.Create_lvr_lrv(LVR,LRV); mt.Create_Thread_V(); mt.Printf_V(); return 0;}
1 0
- 数据结构:中序线索二叉树
- 数据结构——中序线索化二叉树
- 数据结构例程——线索化二叉树(中序)
- 第十一周--数据结构--线索化二叉树(中序)
- 数据结构—线索化二叉树(中序)
- 数据结构---线索二叉树的创建、中序遍历
- 数据结构-中序遍历线索二叉树,堆排序
- 数据结构-->线索二叉树
- 数据结构--线索二叉树
- 【数据结构】线索二叉树
- 数据结构-线索二叉树
- 数据结构 - 线索二叉树
- 线索二叉树-数据结构
- 【数据结构】线索二叉树
- 数据结构-线索二叉树
- 数据结构--线索二叉树
- 数据结构---线索二叉树
- 数据结构---线索二叉树
- linux svn提交错误
- jni中如何传递字符串或者数组
- android--app崩溃日志收集以及上传
- docker-gitlab部署
- iOS的动画切换
- 数据结构:中序线索二叉树
- linux命令之常用shell命令
- Android 5.0学习之使用Material主题
- $.ajax下中文乱码解决方案
- CODEVS1296
- Web Service SOAP Client 设置 SOAP Header 增加SOAP-Header
- wcf学习--建立最简单的WCF服务
- Web测试
- bzoj2127