从大到小按递减顺序输出所有关键字不小于x的数据元素
递归方法
#include "stdafx.h"
#include<iostream>
using namespace std;
typedef struct BSTreeNode
{
int data;
struct BSTreeNode *lchild,*rchild;
}BSTree;
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
void output(BSTree *bst,int x)
{
if(bst)
{
if(bst->data>=x)output(bst->rchild,x);
if(bst->data>=x)cout<<bst->data;
if(bst->data>=x)output(bst->lchild,x);
}
}
非递归方法
#include "stdafx.h"
#include<iostream>
using namespace std;
typedef struct BSTreeNode
{
int data;
struct BSTreeNode *lchild,*rchild;
}BSTree;
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
void output(BSTree *bst,int x)
{
BSTree *s[100],*p=bst;
int top=-1;
while(p||top>-1)
{
while(p)
{
if(p->data>=x)
{
s[++top]=p;
bst=p->rchild;
}
}
if(top>-1)
{
p=s[top--];
if(p->data>=x)
cout<<p->data;
if(p->data>=x)
p=p->lchild;
}
}
}