给出一个数据序列,建立二叉排序树,并实现插入功能
对二叉排序树进行中序遍历,可以得到有序的数据序列
标签:数据 null turn bst 遍历 code 描述 表示 功能
给出一个数据序列,建立二叉排序树,并实现插入功能
对二叉排序树进行中序遍历,可以得到有序的数据序列
第一行输入t,表示有t个数据序列
第二行输入n,表示首个序列包含n个数据
第三行输入n个数据,都是自然数且互不相同,数据之间用空格隔开
第四行输入m,表示要插入m个数据
从第五行起,输入m行,每行一个要插入的数据,都是自然数且和前面的数据不等
以此类推输入下一个示例
第一行输出有序的数据序列,对二叉排序树进行中序遍历可以得到
从第二行起,输出插入第m个数据后的有序序列,输出m行
以此类推输出下一个示例的结果
#include<iostream> using namespace std; class CNode { public: int data; CNode *left; CNode *right; CNode() { left=right=NULL; } }; class BStree { public: CNode *root; BStree() { root=NULL; } void addTree(int number) { CNode *t=root; while(true) { if(number<t->data) { if(t->left==NULL) { t->left=new CNode(); t->left->data=number; return; } else { t=t->left; } } else { if(t->right==NULL) { t->right=new CNode(); t->right->data=number; return; } else { t=t->right; } } } } void printTree(CNode *p) { if(p) { printTree(p->left); cout<<p->data<<" "; printTree(p->right); } } }; int main() { int T; cin>>T; while(T--) { int n; cin>>n; BStree Tree; for(int i=0;i<n;i++) { int c; cin>>c; if(i==0) { Tree.root=new CNode(); Tree.root->data=c; } else { Tree.addTree(c); } } Tree.printTree(Tree.root); cout<<endl; int m; cin>>m; while(m--) { int ch; cin>>ch; Tree.addTree(ch); Tree.printTree(Tree.root); cout<<endl; } } return 0; }
标签:数据 null turn bst 遍历 code 描述 表示 功能
原文地址:https://www.cnblogs.com/SZU-DS-wys/p/12183020.html