数据结构 | 二叉树的创建和三种遍历方式


二叉树的创建和三种遍历方式

帮同学写作业顺带复习了一下

直接丢代码了:

#include <stdio.h>
#include <stdlib.h>


// 二叉树节点结构体&指针类型
typedef struct BiTNode 
{
	char data;    // 数据域
	struct BiTNode* lchild;  // 左孩子
	struct BiTNode* rchild; // 右孩子
}BiTNode, *BiTree;


void CreateBiTree(BiTree &T){
	// 前序遍历创建二叉树
	char data;
	scanf("%c", &data);
	if (data != '#'){           // 遇到#表示当前树结束
		T = new BiTNode;          // 生成根节点
		T->data = data;             // 给数据域赋值
		CreateBiTree(T->lchild);         // 递归创建左子树
		CreateBiTree(T->rchild);          // 递归创建右子树

	}else{
		T = NULL;       // 空树
	}
}


// 前序遍历
void PreOrderTraverse(BiTree T){
	if(T){
		printf("%c ", T->data);             // 访问根节点
		PreOrderTraverse(T->lchild);      // 递归前序遍历左子树
		PreOrderTraverse(T->rchild);      // 递归前序遍历右子树
	}
}

// 中序遍历
void InOrderTraverse(BiTree T){
	if(T){
		InOrderTraverse(T->lchild);      // 递归中序遍历左子树
		printf("%c ", T->data);             // 访问根节点
		InOrderTraverse(T->rchild);      // 递归中序遍历右子树
	}
}

// 后序遍历
void PostOrderTraverse(BiTree T){
	if(T){
		PostOrderTraverse(T->lchild);      // 递归后序遍历左子树
		PostOrderTraverse(T->rchild);      // 递归后序遍历右子树
		printf("%c ", T->data);             // 访问根节点
	}
}



int main(){
	BiTree bt = NULL;
	CreateBiTree(bt);

	printf("\n前序遍历:");
	PreOrderTraverse(bt);

	printf("\n中序遍历:");
	InOrderTraverse(bt);

	printf("\n后序遍历:");
	PostOrderTraverse(bt);



	return 0;
}

over.


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM