数据结构题,求大神给我可运行的代码。谢谢!
题:已知二叉排序树采用二叉链表存储结构,根节点的指针为T,链结点的结构为(lchaild,data,rchild),其中lchild、rchild分别指向该结点左、右孩子...
题:已知二叉排序树采用二叉链表存储结构,根节点的指针为T,链结点的结构为(lchaild,data,rchild),其中lchild、rchild分别指向该结点左、右孩子的指针,data域存放结点的数据信息。请写出递归函数,从小到大输出二叉排序树所有数据值>=x的结点的数据。要求先找到第一个满足条件的结点,再依次输出其他满足其他条件的结点。(亲测可运行啊)
展开
1个回答
展开全部
#include "iostream.h"
typedef int datatype;
typedef struct Node{
datatype data;
Node *lchild, *rchild;
Node(datatype _data = 0, Node *_lchild = NULL, Node *_rchild = NULL):
data(_data), lchild(_lchild), rchild(_rchild){ }
}BitTree;
void DisplayTree(BitTree *T, datatype x)
{
if(T == NULL) return;
Display(T->lchild, x);
if(T->data >= x)
cout << T->data << "\t";
Display(T->rchild, x);
}
void InsertNode(BitTree* &T, datatype x)
{
if(T == NULL) {
T = new Node(x);
return;
}
if(x < T->data) return InsertNode(T->lchild, x);
return InsertNode(T->rchild, x);
}
void Create(BitTree* &T) {
int n, i;
datatype data;
cin >> n;
for(i = 0; i < n; i++) {
cin >> data;
InsertNode(T, data);
}
}
void main( ){
datatype x;
BitTree *T = NULL;
cin >> x;
Create(T);
Display(T, x);
}
typedef int datatype;
typedef struct Node{
datatype data;
Node *lchild, *rchild;
Node(datatype _data = 0, Node *_lchild = NULL, Node *_rchild = NULL):
data(_data), lchild(_lchild), rchild(_rchild){ }
}BitTree;
void DisplayTree(BitTree *T, datatype x)
{
if(T == NULL) return;
Display(T->lchild, x);
if(T->data >= x)
cout << T->data << "\t";
Display(T->rchild, x);
}
void InsertNode(BitTree* &T, datatype x)
{
if(T == NULL) {
T = new Node(x);
return;
}
if(x < T->data) return InsertNode(T->lchild, x);
return InsertNode(T->rchild, x);
}
void Create(BitTree* &T) {
int n, i;
datatype data;
cin >> n;
for(i = 0; i < n; i++) {
cin >> data;
InsertNode(T, data);
}
}
void main( ){
datatype x;
BitTree *T = NULL;
cin >> x;
Create(T);
Display(T, x);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询