四种访问方式:前序遍历,中序遍历,后序遍历,层序遍历
这篇文章主要为前序,中序,后序遍历的递归形式,递归形式较为简单,后面更新遍历的循环形式较为复杂,建议使用递归形式
#include<stdio.h>
#include<stdlib.h>
typedef char E;
typedef struct TreeNode* Node;
struct TreeNode{
E element;
struct TreeNode* left;
struct TreeNode* right;
};
//前序遍历(递归)
//变量根结点
void preOrder(Node root)
{
if(root==NULL)
return;
printf("%c",root->element);
preOrder(root->left);
preOrder(root->right);
}
//中序遍历(递归)
//变量根结点
void inOrder(Node root)
{
if(root==NULL)
return;
inOrder(root->left);
printf("%c",root->element);
inOrder(root->right);
}
//后序遍历(递归)
//变量根结点
void postOrder(Node root)
{
if(root==NULL)
return;
postOrder(root->left);
postOrder(root->right);
printf("%c",root->element);
}
int main()
{
Node a = malloc(sizeof(struct TreeNode));
Node b = malloc(sizeof(struct TreeNode));
Node c = malloc(sizeof(struct TreeNode));
Node d = malloc(sizeof(struct TreeNode));
Node e = malloc(sizeof(struct TreeNode));
Node f = malloc(sizeof(struct TreeNode));
a->element='A';
b->element='B';
c->element='C';
d->element='D';
e->element='E';
f->element='F';
a->left=b;
a->right=c;
b->left=d;
b->right=e;
c->left=NULL;
c->right=f;
d->left=NULL;
d->right=NULL;
e->left=NULL;
e->right=NULL;
f->left=NULL;
f->right=NULL;
preOrder(a);
printf("\n");
inOrder(a);
printf("\n");
postOrder(a);
return 0;
}
标签:Node,数据结构,TreeNode,struct,遍历,right,二叉树,NULL,root
From: https://blog.csdn.net/2301_79268604/article/details/136783799