帮忙实现一下

elegant87 2008-10-18 07:17:51
小弟没好没有看到树,一个朋友问了我这道题,我不会啊!
大家帮忙看看吧!谢谢了!


//现有一棵二叉树和一个有序数组,要求通过这棵二叉树构造有序数组。
//它们的类型声明如下,请定义有序数组的构造函数。
class SEQUENCE;
class TREE{
int item;
TREE *left, *right;
friend SEQUENCE;
public:
//请在此定义函数
};
class SEQUENCE{
int *items;
int size;
public:
SEQUENCE(TREE &);
};
...全文
144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingpaier 2008-10-19
  • 打赏
  • 举报
回复
学习了
jiangmingfu010 2008-10-19
  • 打赏
  • 举报
回复

建一个二叉排序树然后先序遍历就好了
baihacker 2008-10-19
  • 打赏
  • 举报
回复

//释放内存的自己写

#include <stdio.h>
#include <malloc.h>
typedef struct tag_node
{
int data;
struct tag_node* left, *right;
} *tree, node;

void insert(tree t, int value)
{
tree p = t, curr = t->left, new_node = NULL;
while (curr)
{
if (value == curr->data) return;
p = curr;
if (value < curr->data) curr = curr->left;
else curr = curr->right;
}
new_node = (tree)malloc(sizeof(node));
new_node->data = value;
new_node->left = new_node->right = NULL;
if (p == t || value < p->data) p->left = new_node;
else p->right = new_node;
}

void print(tree t)
{
if (!t) return;
print(t->left);
printf("%d ", t->data);
print(t->right);
}
int main()
{
int data[] = {6,8,7,4,5,2,9,54,3};
int i;
tree t = (tree)malloc(sizeof(node));
t->left = t->right = NULL;
for (i = 0; i < sizeof(data)/sizeof(int); ++i)
insert(t, data[i]);
print(t->left);
return 0;
}
星羽 2008-10-18
  • 打赏
  • 举报
回复
用树的遍历放进去就是了
星羽 2008-10-18
  • 打赏
  • 举报
回复
要求可逆吗 ??
e_sharp 2008-10-18
  • 打赏
  • 举报
回复
UP
帅得不敢出门 2008-10-18
  • 打赏
  • 举报
回复
有序整数数组放到二叉树 网上倒有例子 反过来貌似没有
http://blog.chinaunix.net/u2/62281/showart_1183495.html
http://renzaijiang1982.bokee.com/viewdiary.13876242.html
http://topic.csdn.net/t/20041026/09/3490824.html
可以试着从输出部分改起,把输出部分的数据再赋值到一个数组中,就当构造了数组了
不过是递归的话就有点麻烦

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧