Fork me on GitHub

C语言利用数组模拟二叉树遍历(递归方式)

二叉树遍历方式

  1. 先序遍历
    根左右
  2. 中序遍历
    左根右
  3. 后序遍历
    左右根

C语言代码实现

#include "stdio.h" #include "stdlib.h" void pre_order(int arr[], int length, int k); // 二叉树先序遍历 void mid_order(int arr[], int length, int k); // 二叉树中序遍历 void post_order(int arr[], int length, int k); // 二叉树后序遍历 void printI(int arr[], int n); // 遍历打印数组元素 void pre_order(int arr[], int length, int k) { if (k < length) { printf("%d ", arr[k]); // root pre_order(arr, length, 2 * k + 1); // 2k+1为左子树 pre_order(arr, length, 2 * k + 2); // 2k+2为右子树 } } void mid_order(int arr[], int length, int k) { if (k < length) { mid_order(arr, length, 2 * k + 1); printf("%d ", arr[k]); mid_order(arr, length, 2 * k + 2); } } void post_order(int arr[], int length, int k) { if (k < length) { post_order(arr, length, 2 * k + 1); post_order(arr, length, 2 * k + 2); printf("%d ", arr[k]); } } // 打印数组元素 void printI(int arr[], int n) { for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int n = sizeof(arr) / sizeof(int); // 获取数组的长度 printf("initial: "); printI(arr, 9); printf("\n"); printf("pre order: "); pre_order(arr, n, 0); printf("\n"); printf("mid order: "); mid_order(arr, n, 0); printf("\n"); printf("post order: "); post_order(arr, n, 0); printf("\n"); return 0; }

运行结果输出:

initial: 1 2 3 4 5 6 7 8 9 pre order: 1 2 4 8 9 5 3 6 7 mid order: 8 4 9 2 5 1 6 3 7 post order: 8 9 4 5 2 6 7 3 1

往期相关文章


__EOF__

本文作者Hui Li
本文链接https://www.cnblogs.com/leedev-blog/p/18227837.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Hui_Li  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示