二叉排序树(王道)
#include <iostream> #include<cstdio> using namespace std; struct Nod e{ Node* lchild; Node* rchild; int num; }; struct Node Tree[50]; int loc; Node *create(){//创建 Tree[loc].lchild = Tree[loc].rchild = NULL; return &Tree[loc++]; } void preOrder(Node* T){//前序遍历 printf("%d",T->num); if(T->lchild != NULL) preOrder(T->lchild); if(T->rchild != NULL) preOrder(T->rchild); } void inOrder(Node* T){//中序遍历 if(T->lchild != NULL) inOrder(T->lchild); printf("%d",T->num); if(T->rchild != NULL) inOrder(T->rchild); } void postOrder(Node* T){//后序遍历 if(T->lchild != NULL) postOrder(T->lchild); if(T->rchild != NULL) postOrder(T->rchild); printf("%d",T->num); } Node *insertNode(Node *T,int x){//插入数字 if(T == NULL){ T = create(); T->num = x; } else if(x < T->num) T->lchild = insertNode(T->lchild,x); else if(x > T->num) T->rchild = insertNode(T->rchild,x); return T; } int main() { int n; cin >> n; while(n--){ int n2; cin >> n2; Node *T = NULL; loc = 0; for(int i=0;i<n2;i++){ int x = 0; cin >> x; T = insertNode(T,x); } preOrder(T); cout << endl; inOrder(T); cout << endl; postOrder(T); cout << endl; } return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步