IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构-----------树和二叉树(线索二叉树) -> 正文阅读

[数据结构与算法]数据结构-----------树和二叉树(线索二叉树)

#include<iostream>
using namespace std;
typedef struct BiTreeNode
{
	char data;
	struct BiTreeNode *lchild;
	struct BiTreeNode *rchild;
	int LTag,RTag;
}BiTree;

BiTree *pre;

void CreatNode1(BiTree *&T)  //先序遍历建立二叉链表 
{
	char ch;
	cin>>ch;
	if(ch=='#')
		T=NULL;
	else
	{
		T=new BiTree;
		T->data=ch;
		CreatNode1(T->lchild);
		CreatNode1(T->rchild);
	}
}


void CreatBiTree1(BiTree *&T)   //中序线索化 
{
	if(T)
	{
		CreatBiTree1(T->lchild);
		if(!T->lchild)
		{
			T->LTag=1;
			T->lchild=pre;
		}
		else T->LTag=0;
		if(!pre->rchild)
		{
			pre->RTag=1;
			pre->rchild=T;
		}
		else pre->RTag=0;
		pre=T;
		CreatBiTree1(T->rchild);
	}
}

void Threading(BiTree *&Thrt,BiTree *&T)
{
	Thrt=new BiTree;
	Thrt->LTag=0;
	Thrt->RTag=1;
	Thrt->rchild=Thrt;
	if(!T)
		Thrt->lchild=Thrt;
	else
	{
		Thrt->lchild=T;
		pre=Thrt;
		CreatBiTree1(T);
		pre->rchild=Thrt;
		pre->RTag=1;
		Thrt->rchild=pre; 
	}
}

void Traverse(BiTree *T)   //遍历线索二叉树 
{
	BiTree *p;
	p=T->lchild;
	while(p!=T)
	{
		while(p->LTag==0)
			p=p->lchild;
		cout<<p->data<<" ";
		while(p->RTag==1&&p->rchild!=T)
		{
			p=p->rchild;
			cout<<p->data<<" ";
		}
		p=p->rchild;
	}
} 

int main()
{
	BiTree *T;
	BiTree *Thrt;
	cout<<"先序遍历建立二叉链表"<<endl;
	CreatNode1(T);
	cout<<"将二叉树线索化."<<endl;
	Threading(Thrt,T);
	cout<<"线索二叉树显示如下:"<<endl;
	Traverse(Thrt);
	return 0;
}

改代码为二叉树的线索化,增加Ltag和Rtag来标准线索,来获取左右孩子或父辈。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-18 17:38:08  更:2021-10-18 17:39:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:25:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码