本文主要是介绍线索二叉树和中序非递归遍历线索化后的二叉树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//线索二叉树
#include<stdio.h>
#include<malloc.h>
#include<process.h>
#define OVERFLOW -2
//二叉树的二叉线索存储结构
enum PointerTag{Link,Thread}; //枚举类型,Link(0):指针,Thread(1):线索
struct BiThrNode
{char data;BiThrNode *lchild,*rchild;//左右孩子指针PointerTag LTag,RTag;//左右标志
};
typedef BiThrNode *BiThrTree;//按照先序的次序输入二叉树中节点的值,构造线索二叉树T,char,空格表示空节点
void CreateBiThrTree( BiThrTree &T)
{char ch;scanf("%c",&ch);if(ch == ' ')T=NULL;else{T=(BiThrTree)malloc(sizeof(BiThrNode));//生成根节点,先序if(!T)exit(OVERFLOW);T->data=ch;//给根节点赋值CreateBiThrTree(T->lchild);//递归构造左子树if(T->lchild)//如果有左孩子T->LTag=Link;//给坐标值赋值为0CreateBiThrTree(T->rchild);//递归构造右子树if(T->rchild)T->RTag=Link;//如果有右孩子,就给右标志赋值为0}
}
BiThrTree pre;//全局变量,始终指向刚刚访问过的节点//通过中序遍历进行中序线索化,线索化之后,pre指向最后一个节点
void InThreading(BiThrTree p)/
这篇关于线索二叉树和中序非递归遍历线索化后的二叉树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!