非递归二叉排序树
#include<iostream> #include<string> #include<cstring> #include<cmath> #include<algorithm>//非递归 using namespace std; int a[1000]; int q = 0; int flag = 0; typedef struct BiTNode { int data; struct BiTNode *lchild, *rchild; int count; }BiTNode,*BiTree; void InsertBST(BiTree &T,int e) { BiTNode *cur=T; BiTree s = new BiTNode; s->data = e; s->count = 0; s->lchild = NULL; s->rchild = NULL; if (!T) { T = s; } else { BiTNode *parent=T; while (cur != NULL) { parent = cur; if (e > parent->data) cur = parent->rchild; else if (e < parent->data) cur = parent->lchild; else if (e == parent->data) { parent->count++; flag = 1; break; } } if (e > parent->data) parent->rchild = s; if (e < parent->data) parent->lchild = s; } } void CreatBST(BiTree &T,int n,int V[]) { T = NULL; for (int i = 0; i < n; i++) { InsertBST(T, V[i]); } } int s[1000]; int i = 0; void InorderTraverse(BiTree T,int e) { if (T != NULL) { InorderTraverse(T->lchild,e); if (T->data != e) { cout << " " << T->data; s[i] = T->count; i++; } InorderTraverse(T->rchild,e); } } int main() { int n; while (cin >> n && n != 0) { q = 0; BiTree T; int V[1000]; flag = 0; for (int i = 0; i < 100; i++) s[i] = 0; for (int i = 0; i < n; i++) { cin >> V[i]; } CreatBST(T, n, V); int a; cin >> a; InsertBST(T, a); BiTree p; p = T; while (p->lchild) { p = p->lchild; } cout << p->data; s[0] = p->count; i++; int e = p->data; InorderTraverse(T,e); cout << endl; int m=0; if (flag == 0) m = n + 1; else m = n; cout << s[0]; for (int i = 1; i < m; i++) { cout << " " << s[i]; } cout << endl; } return 0; }
1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码