1. 程式人生 > 其它 >資料結構 | 二叉樹的建立和三種遍歷方式

資料結構 | 二叉樹的建立和三種遍歷方式

二叉樹的建立和三種遍歷方式

幫同學寫作業順帶複習了一下

直接丟程式碼了:

#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.

本文來自部落格園,作者:Mz1,轉載請註明原文連結:https://www.cnblogs.com/Mz1-rc/p/15408396.html

如果有問題可以在下方評論或者email:[email protected]