二叉树的基本操作之二叉排序树
生活随笔
收集整理的這篇文章主要介紹了
二叉树的基本操作之二叉排序树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//二叉樹的基本操作之—建立二叉排序樹并遍歷
#include<stdio.h>
#include<string.h>
struct Node{Node *lchild;Node *rchild;int c;
}Tree[110];//靜態數組
int loc;// 靜態數組中被使用的元素個數
Node *create(){//申請未使用的結點 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){//將數字x 插入到排序樹中 if(T==NULL){//當前樹為空T=create();T->c=x;return T; }else if(x<T->c){//若x小于根結點數值 T->lchild=Insert(T->lchild,x);//插到左子樹上else if(x>T->c)T->rchild=Insert(T->rchild,x);//插到右子樹上 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);//插入到排序樹中
}printf("先序遍歷:");preOrder(T);printf("\n");printf("中序遍歷:");inOrder(T);printf("\n");printf("后序遍歷:");postOrder(T);printf("\n");}return 0;
}
?
轉載于:https://www.cnblogs.com/Elaine-DWL/p/7106044.html
總結
以上是生活随笔為你收集整理的二叉树的基本操作之二叉排序树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【翻译自mos文章】OGG的集成捕捉模式
- 下一篇: 广西生源地贷款什么时候到账