撰寫程式實作二叉樹的創建,先序、中序、后序的遞回遍歷演算法,在此基礎上設計一個主程式完成如下功能:
(1)依次讀入字符“ABD??E??C?FG??H??”,按照先序建立二叉樹T(?表示空格);
(2)先序遞回遍歷二叉樹T,輸出遍歷序列;
(3)中序遞回遍歷二叉樹T,輸出遍歷序列;
(4)后序遞回遍歷二叉樹T,輸出遍歷序列,
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #define MAXSIZE 70 typedef struct BiTreeNode { char data; struct BiTreeNode *left; struct BiTreeNode *right; }BiTreeNode, *BiTree; void CreateBiTree(BiTree *T) { char val; scanf_s("%c", &val); if (val == '0') *T = NULL; //null表示為空枝 else { *T = (BiTree)malloc(sizeof(BiTreeNode)); (*T)->data =https://www.cnblogs.com/lumc5/p/ val; CreateBiTree(&(*T)->left); CreateBiTree(&(*T)->right); } } void PreOrderTravel(BiTree T) { if (T == NULL) return; printf("%c ", T->data); PreOrderTravel(T->left); PreOrderTravel(T->right); } void InOrderTravel(BiTree T) { if (T == NULL) return; InOrderTravel(T->left); printf("%c ", T->data); InOrderTravel(T->right); } void TailOrderTravel(BiTree T) { if (T == NULL) return; TailOrderTravel(T->left); TailOrderTravel(T->right); printf("%c ", T->data); } int main() { BiTree T; T = (BiTree)malloc(sizeof(BiTreeNode)); printf("輸入結點的值:\n"); CreateBiTree(&T); printf("先序遍歷:\n"); PreOrderTravel(T); printf("\n"); printf("中序遍歷:\n"); InOrderTravel(T); printf("\n"); printf("后序遍歷:\n"); TailOrderTravel(T); printf("\n"); return 0; }
運行截圖:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/138105.html
標籤:其他
上一篇:數論篇6——歐拉函式
