c语言_构建一个静态二叉树实现方法

时间:2021-09-11 08:29:12

第一、树的构建

定义树结构

?
1
2
3
4
5
struct BTNode {
  char data;
  struct BTNode* pLChild;
  struct BTNode* pRChild;
};

静态方式创建一个简单的二叉树

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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. 先序遍历

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//先序输出
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. 中序遍历

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//中序输出
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.后续遍历

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//后序输出
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);
  }
}

第三、最终运行测试

?
1
2
3
4
5
6
7
8
9
10
11
12
int main() {
  printf("创建序列\n");
  struct BTNode* pHead = create_list();
 
  printf("先序输出\n");
  PreTravense(pHead);
  printf("中序输出\n");
  InTravense(pHead);
  printf("后序输出\n");
  PostTravense(pHead);
  return 0;
}

c语言_构建一个静态二叉树实现方法

以上这篇c语言_构建一个静态二叉树实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。