线索二叉树(先序遍历,前序排序)输入输出实现

输入示例:
ABDH#K###E##CFI###G#J##

输出示例:
前序排序:ABDHKECFIGJ

思路:首先构建一个二叉树结点的结构体,在构建一个create函数将这些结点串起来(用递归的方式),通过左右孩子指针遍历整棵树,得出结果。

#include 
using namespace std;

typedef struct BiTNode { //定义二叉树结点的结构体
	char data;//定义结点的数据域
	struct BiTNode *lchild, *rchild;//定义结点的左右孩子指针
} BiTNode, *BiTree; //{}外面的NiTNode ,*BiTree是这个结构体的两个别名,都可以指代这个结构体哦

void createBiTree(BiTree &T) { //创建二叉树
	char ch ;//定义一个字符类型的变量ch
	cin >> ch ;//输入
	if (ch == '#') { //如果输入的字符是#,T指向空。相当于创建了一个空结点
		T = NULL;
	} else {
		T = new BiTNode ;//生成根节点
		if (!T) {
			exit(1);//如果新建二叉树结点失败,(由于存储空间不够)就结束。
		}
		T->data = ch ;//将输入的字符赋值给T所指结点的指针域
		createBiTree(T->lchild);//构建左子树
		createBiTree(T->rchild);//构建右子树(递归)
	}
}

void PreOrderTraverse(BiTree T) {
	if (!T)
		return;
	cout << T->data; //输出T结点所指的数据
	PreOrderTraverse(T->lchild);
	PreOrderTraverse(T->rchild);
}

int main() {
	BiTree T;
	createBiTree(T);
	cout << "前序排序:";
	PreOrderTraverse(T);//前序排序
	cout << endl;

	return 0 ;
}在这里插入代码片

运行结果:
线索二叉树(先序遍历,前序排序)输入输出实现_第1张图片

你可能感兴趣的:(123,c++,数据结构,算法)