Tree Traversal
Jump to navigation
Jump to search
#include<stdio.h> #include<stdlib.h> struct node{ char val; node *l,*r; }; void pre(node *root){ printf("%c",root->val); if(root->l!=NULL) pre(root->l); if(root->r!=NULL) pre(root->r); } void post(node *root){ if(root->l!=NULL) post(root->l); if(root->r!=NULL) post(root->r); printf("%c",root->val); } void in(node *root){ if(root->l!=NULL) in(root->l); printf("%c",root->val); if(root->r!=NULL) in(root->r); } void bfs(node *root){ node *queue[100],*tmp; int front=0,back=0; queue[back]=root; back++; while(front!=back){ tmp=queue[front]; front++; if(tmp->l!=NULL){ queue[back]=tmp->l; back++; } if(tmp->r!=NULL){ queue[back]=tmp->r; back++; } printf("%c",tmp->val); } } int main(){ node *root; root=(node*)malloc(sizeof(node)); root->val='+'; root->l=(node*)malloc(sizeof(node)); root->l->val='/'; root->r=(node*)malloc(sizeof(node)); root->r->val='*'; root->l->l=(node*)malloc(sizeof(node)); root->l->l->val='*'; root->l->r=(node*)malloc(sizeof(node)); root->l->r->val='-'; root->r->l=(node*)malloc(sizeof(node)); root->r->l->val='5'; root->r->l->l=NULL; root->r->l->r=NULL; root->r->r=(node*)malloc(sizeof(node)); root->r->r->val='-'; root->l->l->l=(node*)malloc(sizeof(node)); root->l->l->l->val='2'; root->l->l->l->l=NULL; root->l->l->l->r=NULL; root->l->l->r=(node*)malloc(sizeof(node)); root->l->l->r->val='3'; root->l->l->r->l=NULL; root->l->l->r->r=NULL; root->l->r->l=(node*)malloc(sizeof(node)); root->l->r->l->val='2'; root->l->r->l->l=NULL; root->l->r->l->r=NULL; root->l->r->r=(node*)malloc(sizeof(node)); root->l->r->r->val='1'; root->l->r->r->l=NULL; root->l->r->r->r=NULL; root->r->r->l=(node*)malloc(sizeof(node)); root->r->r->l->val='4'; root->r->r->l->l=NULL; root->r->r->l->r=NULL; root->r->r->r=(node*)malloc(sizeof(node)); root->r->r->r->val='1'; root->r->r->r->l=NULL; root->r->r->r->r=NULL; printf("\n"); printf("PRE ORDER TRAVERSAL : "); pre(root); printf("\n"); printf("POST ORDER TRAVERSAL : "); post(root); printf("\n"); printf("IN ORDER TRAVERSAL : "); in(root); printf("\n"); printf("BREADTH FIRST SEARCH : "); bfs(root); printf("\n"); scanf(" "); return 0; }