博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现二叉树先序、中序、后序遍历
阅读量:2391 次
发布时间:2019-05-10

本文共 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/

你可能感兴趣的文章
为什么有的系统的事务码BSP_WD_CMPWB看不见Enhance Component这个按钮
查看>>
CRM product UI里assignment block的显示隐藏逻辑
查看>>
使用SAP云平台 + JNDI访问Internet Service
查看>>
如何在Chrome development tool里查看C4C前台发送的请求细节
查看>>
微信小程序开发系列四:微信小程序之控制器的初始化逻辑
查看>>
微信小程序开发系列教程三:微信小程序的调试方法
查看>>
01串排序(stl set使用)
查看>>
KMP算法实现
查看>>
KMP实现(二)
查看>>
C++要点(五)-多重继承和虚继承
查看>>
中缀表达式转后缀表达式并计算后缀表达式的值...
查看>>
有序链表的合并(递归实现)
查看>>
什么是程序员的优秀品质?
查看>>
咋想...
查看>>
数组逆序输出(递归)
查看>>
大数据量,海量数据处理方法总结(转)
查看>>
整数划分(计数)
查看>>
整数划分(计数+划分显示)
查看>>
signed和unsigned的比较
查看>>
C语言深度剖析总结(一)
查看>>