二叉树的遍历:是指从根节点出发,按照某种次序依次访问二叉树中的所有结点。
二叉树遍历一共又有四种:
1.前序遍历
2.后序遍历
3.中序遍历
4.层序遍历
口诀:
后序:左右根
后序遍历:若树为空,则空操作返回,否则从左到右先叶子后结点的方式访问遍历左右子树,最后访问根节点。
后序遍历结果:H I D J E B K F G C A
后序遍历:8 6 7 5
#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",node -> data);
preorder(node -> left);
printf("%d",node -> data);
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(){
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;
n3.left =NULL;
n3.right =NULL;
n4.left=NULL;
n4. right=NULL;
postorder(&n1);
}