本文共 1218 字,大约阅读时间需要 4 分钟。
根节点:没有父节点的节点
这里需要使用到递归
先序:根->左->右
中序:左->根->右
后序:左->右->根
代码实现:
#include#include struct node{//结点类型 int data; struct node* left; struct node* right;};typedef struct node Node;Node* creat_node(int d){ Node* pn; pn = malloc(sizeof(Node)); pn->data = d; pn->left = pn->right = NULL; return pn;}void creat_tree(Node** t){ int d; Node* pn = NULL; scanf("%d",&d); if(d == 0) return; pn = creat_node(d); *t = pn; creat_tree( &((*t)->left) ); creat_tree( &((*t)->right) );}void ptravel(Node* t){ if(t == NULL) return; printf("%d ",t->data);//根 ptravel(t->left);//左 ptravel(t->right);//右}void pre_travel(Node* t){ printf("pre_travel:"); ptravel(t); printf("\n");}void mtravel(Node* t){ if(t == NULL) return; mtravel(t->left);//左 printf("%d ",t->data);//根 mtravel(t->right);//右}void mid_travel(Node* t){ printf("mid_travel:"); mtravel(t); printf("\n");}void ltravel(Node* t){ if(t == NULL) return; ltravel(t->left);//左 ltravel(t->right);//右 printf("%d ",t->data);//根}void lst_travel(Node* t){ printf("lst_travel:"); ltravel(t); printf("\n");}int main(){// int a[10] = {1,9,87,66,4,5,2,3,99,-38}; Node* tree = NULL; creat_tree(&tree); pre_travel(tree);//先序遍历 mid_travel(tree);//中 lst_travel(tree);//后 return 0;}
转载地址:http://eylab.baihongyu.com/