从大到小按递减顺序输出所有关键字不小于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; } } }