今天数据结构老师讲课时顺带着讲了下二叉排序树
根据上课的印象大概写了这个代码
大概就是一个序列构造一棵二叉树,然后中根遍历就是排完序的序列
#include <bits/stdc++.h>
using namespace std;
#define ll long long
class sortTree{
private:
struct stk{
int val;
stk *left,*right;
}head;
int Cnt;
public:
sortTree(){
head.val = Cnt = 0;
head.left = head.right = NULL;
}
void add(int x){
if(!Cnt)
{
head.val = x;
Cnt++;
return;
}
Cnt++;
stk *p = new stk;
stk *f =&head;
p->val = x;
p->left = p->right = NULL;
while(1)
{
int c = f->val;
if(x<f->val)
{
if(!f->left)
{
f->left = p;
break;
}
else
f = f->left;
}
else
{
if(!f->right)
{
f->right = p;
break;
}
else
f = f->right;
}
}
}
int Getcnt(){return Cnt;}
void Print(){
stack<stk*> S;
stk *t = &head;
while(t!=NULL||(!S.empty()))
{
while(t!=NULL)
{
S.push(t);
t = t->left;
}
t = S.top();
cout<<t->val<<" ";
S.pop();
t = t->right;
}
}
};
int main(){
sortTree A;
for(int i=5;i;i--)
A.add(i);
A.Print();
return 0;
}