#include <stdio.h>
#include <stdlib.h>
// 树的结点的结构定义
typedef struct node {
int data;
struct node* Left;
struct node* Right;
} Node;
// 先序遍历 访问根 -> 左子结点 -> 右子结点
void preorder(Node* node) {
if (node != NULL) {
printf("%d\n", node->data);
preorder(node->Left);
preorder(node->Right);
}
}
// 中序遍历 左子结点 -> 访问根 -> 右子结点
void inorder(Node* node) {
if (node != NULL) {
inorder(node->Left);
printf("%d\n", node->data);
inorder(node->Right);
}
}
// 后序遍历 左子结点 -> 右子结点 -> 访问根
void postorder(Node* node) {
if (node != NULL) {
postorder(node->Left);
postorder(node->Right);
printf("%d\n", node->data);
}
}
int main(void)
{
// 创建结点
Node n1;
Node n2;
Node n3;
Node n4;
// 赋值
n1.data = 5;
n2.data = 6;
n3.data = 7;
n4.data = 8;
// 确定各结点的关系
n1.Left = &n2;
n1.Right = &n3;
n2.Left = &n4;
n2.Right = NULL; // 没有子结点就指向 NULL
n3.Left = NULL;
n3.Right = NULL;
n4.Left = NULL;
n4.Right = NULL;
// 遍历结点
printf("先序遍历结果:\n");
preorder(&n1);
printf("中序遍历结果:\n");
inorder(&n1);
printf("后序遍历结果:\n");
postorder(&n1);
return 0;
}
二叉树的结点定义及遍历
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 二叉树(binary tree)是一颗树,其中每个节点都不能有多于两个的儿子。 1.二叉树节点 作为图的特殊形式,...
- 本篇主要介绍自编码这一粗暴、有效的手段。 自编码是一个很有趣的思路,很容易被理解和接受,它替代了传统的特征提取过程...