二叉树的基本操作之二叉排序树
生活随笔
收集整理的這篇文章主要介紹了
二叉树的基本操作之二叉排序树
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
//二叉樹(shù)的基本操作之—建立二叉排序樹(shù)并遍歷
#include<stdio.h>
#include<string.h>
struct Node{Node *lchild;Node *rchild;int c;
}Tree[110];//靜態(tài)數(shù)組
int loc;// 靜態(tài)數(shù)組中被使用的元素個(gè)數(shù)
Node *create(){//申請(qǐng)未使用的結(jié)點(diǎn) Tree[loc].lchild=Tree[loc].rchild=NULL;return &Tree[loc+1];
}
void postOrder(Node *T){//后序遍歷if(T->lchild!=NULL)postOrder(T->lchild);if(T->rchild!=NULL)postOrder(T->rchild);printf("%d ",T->c);
}
void inOrder(Node *T){//中序遍歷if(T->lchild!=NULL)inOrder(T->lchild);printf("%d ",T->c); if(T->rchild!=NULL)inOrder(T->rchild);
}
void preOrder(Node *T){//前序遍歷printf("%d ",T->c); if(T->lchild!=NULL)preOrder(T->lchild);if(T->rchild!=NULL)preOrder(T->rchild);
}
Node *Insert(Node *T,int x){//將數(shù)字x 插入到排序樹(shù)中 if(T==NULL){//當(dāng)前樹(shù)為空T=create();T->c=x;return T; }else if(x<T->c){//若x小于根結(jié)點(diǎn)數(shù)值 T->lchild=Insert(T->lchild,x);//插到左子樹(shù)上else if(x>T->c)T->rchild=Insert(T->rchild,x);//插到右子樹(shù)上 return T;
}
int main(){int n;while(scanf("%d",&n)!=EOF){loc=0;Node *T=NULL;for(int i=0;i<n;i++){int x;scanf("%d",&x);T=Insert(T,x);//插入到排序樹(shù)中
}printf("先序遍歷:");preOrder(T);printf("\n");printf("中序遍歷:");inOrder(T);printf("\n");printf("后序遍歷:");postOrder(T);printf("\n");}return 0;
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/Elaine-DWL/p/7106044.html
總結(jié)
以上是生活随笔為你收集整理的二叉树的基本操作之二叉排序树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【翻译自mos文章】OGG的集成捕捉模式
- 下一篇: ios业务模块间互相跳转的解耦方案