当前位置:网站首页 > 技术博客 > 正文

二叉树遍历 c语言



二叉树

是一种常用的

数据结构

,它的节点最多只有两个子节点。

二叉树

遍历

方式有三种,分别是前序

遍历

、中序

遍历

和后序

遍历

。下面是用

C语言 实现 二叉树 遍历

的代码:

```c

#include <stdio.h>

#include <stdlib.h>

typedef struct TreeNode {

int val;

struct TreeNode* left;

struct TreeNode* right;

} TreeNode;

// 创建一个新的节点

TreeNode* createNode(int val) {

TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));

node->val = val;

node->left = NULL;

node->right = NULL;

return node;

}

// 前序

遍历

void preorderTraversal(TreeNode* root) {

if (root == NULL) {

return;

}

printf("%d ", root->val); // 先访问根节点

preorderTraversal(root->left); // 再访问左子树

preorderTraversal(root->right); // 最后访问右子树

}

// 中序

遍历

void inorderTraversal(TreeNode* root) {

if (root == NULL) {

return;

}

inorderTraversal(root->left); // 先访问左子树

printf("%d ", root->val); // 再访问根节点

inorderTraversal(root->right); // 最后访问右子树

}

// 后序

遍历

void postorderTraversal(TreeNode* root) {

if (root == NULL) {

return;

}

postorderTraversal(root->left); // 先访问左子树

postorderTraversal(root->right); // 再访问右子树

printf("%d ", root->val); // 最后访问根节点

}

int main() {

// 创建一个

二叉树

TreeNode* root = createNode(1);

root->left = createNode(2);

root->right = createNode(3);

root->left->left = createNode(4);

root->left->right = createNode(5);

root->right->left = createNode(6);

root->right->right = createNode(7);

printf("前序

遍历

结果:");

preorderTraversal(root);

printf("

");

printf("中序

遍历

结果:");

inorderTraversal(root);

printf("

");

printf("后序

遍历

结果:");

postorderTraversal(root);

printf("

");

return 0;

}

  上面的代码中,首先定义了一个 二叉树 节点的结构体,并编写了一个创建节点的函数。接着,分别 实现 了前序 遍历 、中序 遍历 和后序 遍历 的函数。最后,在主函数中创建了一个 二叉树 ,并分别调用了三种 遍历 函数输出结果。

版权声明


相关文章:

  • ncurses linux2024-11-21 12:29:59
  • STM32F42024-11-21 12:29:59
  • 生成树科技有限公司2024-11-21 12:29:59
  • java多态解释2024-11-21 12:29:59
  • 索引创建的目的2024-11-21 12:29:59
  • 面向对象设计的3个基本特征2024-11-21 12:29:59
  • cwe(CWE Top 25 2021. Что такое, с чем едят и чем полезен при статическом анализе?)2024-11-21 12:29:59
  • 深度优先搜索遍历算法的图解2024-11-21 12:29:59
  • nlp销售课程的心得与感悟2024-11-21 12:29:59
  • js如何给数组添加元素2024-11-21 12:29:59