程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> c語言_構建一個靜態二叉樹實現方法

c語言_構建一個靜態二叉樹實現方法

編輯:關於C++

c語言_構建一個靜態二叉樹實現方法。本站提示廣大學習愛好者:(c語言_構建一個靜態二叉樹實現方法)文章只能為提供參考,不一定能成為您想要的結果。以下是c語言_構建一個靜態二叉樹實現方法正文


c語言_構建一個靜態二叉樹實現方法

投稿:jingxian

下面小編就為大家帶來一篇c語言_構建一個靜態二叉樹實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

第一、樹的構建

定義樹結構

struct BTNode { 
  char data; 
  struct BTNode* pLChild; 
  struct BTNode* pRChild; 
}; 

靜態方式創建一個簡單的二叉樹

struct BTNode* create_list() { 
 
  struct BTNode* pA = (struct BTNode*)malloc(sizeof(BTNode)); 
  struct BTNode* pB = (struct BTNode*)malloc(sizeof(BTNode)); 
  struct BTNode* pC = (struct BTNode*)malloc(sizeof(BTNode)); 
  struct BTNode* pD = (struct BTNode*)malloc(sizeof(BTNode)); 
  struct BTNode* pE = (struct BTNode*)malloc(sizeof(BTNode)); 
   
  pA->data = 'A'; 
  pB->data = 'B'; 
  pC->data = 'C'; 
  pD->data = 'D'; 
  pE->data = 'E';  
 
  pA->pLChild = pB; 
  pA->pRChild = pC; 
  pB->pLChild = pB->pRChild = NULL; 
 
  pC->pLChild = pD; 
  pC->pRChild = NULL; 
 
  pD->pLChild = NULL; 
  pD->pRChild = pE; 
 
  pE->pLChild = pE->pRChild = NULL; 
 
  return pA; 
} 

第二、樹的三種遍歷

1. 先序遍歷

//先序輸出 
void PreTravense(struct BTNode* pHead) { 
  if (NULL!= pHead) 
  { 
    printf("%c", pHead->data); 
    if (NULL!= pHead->pLChild) 
    { 
      PreTravense(pHead->pLChild); 
    } 
    if (NULL != pHead->pRChild) 
    { 
      PreTravense(pHead->pRChild); 
    } 
  } 
} 

2. 中序遍歷

//中序輸出 
void InTravense(struct BTNode* pHead) { 
  if (NULL != pHead) 
  { 
    if (NULL != pHead->pLChild) 
    { 
      PreTravense(pHead->pLChild); 
    } 
    printf("%c", pHead->data); 
     
    if (NULL != pHead->pRChild) 
    { 
      PreTravense(pHead->pRChild); 
    } 
  } 
} 

3.後續遍歷

//後序輸出 
void PostTravense(struct BTNode* pHead) { 
  if (NULL != pHead) 
  { 
    if (NULL != pHead->pLChild) 
    { 
      PreTravense(pHead->pLChild); 
    }    
 
    if (NULL != pHead->pRChild) 
    { 
      PreTravense(pHead->pRChild); 
    } 
    printf("%c", pHead->data); 
  } 
} 

第三、最終運行測試

int main() { 
  printf("創建序列\n"); 
  struct BTNode* pHead = create_list(); 
 
  printf("先序輸出\n"); 
  PreTravense(pHead); 
  printf("中序輸出\n"); 
  InTravense(pHead); 
  printf("後序輸出\n"); 
  PostTravense(pHead); 
  return 0; 
} 

以上這篇c語言_構建一個靜態二叉樹實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved