根据序列构造二叉排序树_二叉树排序

根据序列构造二叉排序树_二叉树排序编写递归算法,从大到小输出二叉排序树中所有关键字不小于X的数据素,要求算法的时间复杂度为O(log2(m+n)),其中n为二叉排序树中所含素的个数,m为输出素个数1 // IsBigThanX.cpp : 定义控制台应用程序的入口点。 2 // 编写递归算法,

编写递归算法,从大到小输出二叉排序树中所有关键字不小于X的数据素,要求算法的时间复杂度为O(log2(m+n)),其中n为二叉排序树中所含素的个数,m为输出素个数   1 // IsBigThanX.cpp : 定义控制台应用程序的入口点。 2 // 编写递归算法,从大到小输出给定二叉排序树中所有关键字不小于x的数据素 3 4 #include “stdafx.h” 5 #include<iostream> 6 #include<fstream> 7 using namespace std; 8 9 typedef int KeyType; 10 struct ElemType { KeyType key; }; 11 //定义二叉树结构体 12 typedef struct BiTNode 13 { 14 ElemType data; 15 BiTNode *lchild, *rchild; 16 }*BiTree; 17 BiTree CreateNode(ElemType x)//建立新结点 18 { 19 BiTree p; 20 p = new BiTNode; 21 p->data = x; 22 p->lchild = p->rchild = NULL; 23 return p; 24 } 25 void InsertBST(BiTree &T, ElemType x)//插入结点 26 { 27 if (!T) T = CreateNode(x); 28 else if (x.key<T->data.key) InsertBST(T->lchild, x); 29 else if (x.key>T->data.key) InsertBST(T->rchild, x); 30 } 31 void CreateBST(BiTree &T, char fn[])//创建二叉排序树 32 { 33 ElemType x; ifstream f; 34 f.open(fn); T = NULL; 35 while (!f.eof()) { f >> x.key; InsertBST(T, x); } 36 f.close(); 37 } 38 //visit 函数 39 void visit(ElemType e) 40 { 41 cout << e.key; 42 } 43 //二叉树的输出函数 44 void preorderlist(BiTree T, void visit(ElemType)) 45 { 46 if (T) 47 { 48 visit(T->data); 49 if (T->lchild || T->rchild) 50 { 51 cout << “(“; preorderlist(T->lchild, visit);//输出左孩子 52 cout << “,”; preorderlist(T->rchild, visit);//输出右孩子 53 cout << “)”; 54 } 55 } 56 else cout << “#”; 57 } 58 //从大到小输出二叉排序树中不小于x的素,通过从右子树到左子树的递归实现 59 void PrintBSTLx(BiTree &T, KeyType x) 60 { 61 if (!T) return; 62 PrintBSTLx(T->rchild, x); 63 if (T->data.key<x) return; 64 cout << T->data.key << ” “; 65 PrintBSTLx(T->lchild, x); 66 } 67 //主函数 68 int main() 69 { 70 71 BiTree T; KeyType x; 72 CreateBST(T, “C:\Users\work\Desktop\1.txt”); 73 cout << “所创建的二叉树为:”;//输出创建的二叉排序树 74 preorderlist(T, visit); 75 cout << endl; 76 cout << “请输入数值x: “; 77 cin >> x; 78 PrintBSTLx(T, x); 79 cout << endl; 80 system(“pause”); 81 82 return 0; 83 }

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/79926.html

(0)
上一篇 2024年 8月 2日
下一篇 2024年 8月 2日

相关推荐

关注微信