一个程序,求大大们帮忙修改啊!谢谢了

狗山上的猫头鹰 2011-11-24 05:42:59
2.设一棵n个结点的完全二叉树采用顺序存储结构,保存在一维数组A中。试设计一个递归算法,复制该完全二叉树,得到一棵新的采用普通二叉链表存储的二叉树。二叉链表的每个结点有三个域:lchild,rchild和element.算法返回构造的新二叉树的根结点地址。
Void copyBT(BTree &T,int A[],int n)
{
While(A[i]!=0)
{
element[T]=A[i];
Element[T->lchild]=copy(T->lchild,A,n);
Element[T->rchild]=copy(T->rchild,A,n);
}

哈哈,错误一定很多!可是我搞不出来
...全文
111 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
依文依叶 2011-11-24
  • 打赏
  • 举报
回复
楼上的代码很清晰
qfangmiao 2011-11-24
  • 打赏
  • 举报
回复
看了楼主的题目简单的做了下
可能还有不完善的地方

#include<stdio.h>
#include<stdlib.h>
typedef int Element;

struct BNode{
struct BNode *leftChild;
struct BNode *rightChild;
Element e;
};
typedef BNode * Node;
struct BTree
{
//带头结点的树
Node first;
int count;
};
typedef BTree * Tree;

BTree *CreateBTree()
{
Tree t=(Tree)malloc(sizeof(struct BTree));
t->first=(Node)malloc(sizeof(struct BNode));
t->count=0;
return t;
}

//递归遍历
void copyBT(Tree T,int A[],int n,int i,Node p)
{
// i>n-1返回
if(i>n-1) return ;

if(A[i]!=0)
{
Node newNode =(Node)malloc(sizeof(struct BNode));
newNode->e=A[i];

// 左孩子
if(i%2==0)
p->leftChild=newNode;
else/*右孩子*/
p->rightChild=newNode;
p=newNode;
T->count++;
copyBT(T,A,n,2*i,p);
copyBT(T,A,n,2*i+1,p);
}
}
int main()
{
Tree t=CreateBTree();
//指向父节点
Node p=t->first;
int A[8]={0,1,2,3,4,5,6,7};
//数组我们从1开始。第一个默认为0。便于2*i和2*i+1操作
copyBT(t,A,8,1,p);
return 0;
}
  • 打赏
  • 举报
回复
O MY GOD
flowingfirefly 2011-11-24
  • 打赏
  • 举报
回复
看见数据结构恶心,不知道为什么,唉。。。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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