大家好,又见面了,我是全栈君。
这个是道正统的树构建和遍历题。一開始还想用数组构建取代一下水过去,可是发现不行,仅仅好老老实实的用指针了。二叉排序树和遍历方法假设不清楚定义的话。最好去看看数据结构书复习下。
#include<stdio.h> struct node{ node *l; node *r; int val; node(int a):val(a),l(NULL),r(NULL){}; }; node *root; int n; void qian(node *p){ printf("%d ",p->val); if(p->l!=NULL)qian(p->l); if(p->r!=NULL)qian(p->r); } void zhong(node *p){ if(p->l!=NULL)zhong(p->l); printf("%d ",p->val); if(p->r!=NULL)zhong(p->r); } void hou(node *p){ if(p->l!=NULL)hou(p->l); if(p->r!=NULL)hou(p->r); printf("%d ",p->val); } int main(){ int val; node *p; while(~scanf("%d",&n)){ root=NULL; for(int i=0;i<n;i++){ scanf("%d",&val); if(i==0){ root=new node(val); continue; } p=root; while(1){ if(val==p->val)break; else if(val<p->val){ if(p->l==NULL){ p->l=new node(val); break; } else{ p=p->l;continue; } } else if(val>p->val){ if(p->r==NULL){ p->r=new node(val); break; } else{ p=p->r;continue; } } } } qian(root); printf("\n"); zhong(root); printf("\n"); hou(root); printf("\n"); } return 0; }
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116527.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...