已知先、中序序列,构造二叉树问题

xunuo20041101 2008-04-21 05:07:54
看到一道面试题,觉得好玩,写了个算法
一起交流一下,希望能抛砖引玉,并望高手指正
#include <stdio.h>
#include <string.h>

struct Node
{
Node* left;
Node* right;
char value;
};

void Rebuild(char* preOrder/*先序*/, char* inOrder/*中序*/,
int length/*子树长度*/, Node** root/*root为输出*/)
{
if (length == 0)
{
*root = NULL;
return;
}

(*root) = new Node;
(*root)->value = preOrder[0];

char tmp = preOrder[0];
for (int i=0; i<length; i++)
{
if (inOrder[i] == tmp)
break;
}

Rebuild(preOrder+1, inOrder, i, &((*root)->left));
Rebuild(preOrder+i+1, inOrder+i+1, length-i-1, &((*root)->right));
}

void PostOrder(Node* root)
{
if (root != NULL)
{
PostOrder(root->left);
PostOrder(root->right);
printf("%c", root->value);
}
}

int main()
{
char* preOrder = "abdecfg";
char* inOrder = "dbeafcg";
Node* root;
Rebuild(preOrder, inOrder, strlen(preOrder), &root);
PostOrder(root);
printf("\n");
return 0;
}
...全文
256 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzw200 2008-07-03
  • 打赏
  • 举报
回复
是的 说什么呢 时间好少 有问题 你就说出来 你一下 代码 连个 什么都没有
那有时间 看 这代码呢?
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
没遇到过这种情况.
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
接分先!
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
不明LZ在说什么
zhangqdan 2008-04-22
  • 打赏
  • 举报
回复
接分,不过我刚学数据结构
夜雨_倚琴 2008-04-22
  • 打赏
  • 举报
回复
有时间看看,先接分,呵呵
ksharp2008 2008-04-21
  • 打赏
  • 举报
回复
又见大王,大王是学生还是工作了啊
  • 打赏
  • 举报
回复
http://hi.baidu.com/starseas/blog/item/c9cec4032aa0ab733912bbf4.html
http://hi.baidu.com/xmuboy/blog/item/22a2a9caee23e684c81768ce.html

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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