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);
}
哈哈,错误一定很多!可是我搞不出来
4 个解决方案
#1
看见数据结构恶心,不知道为什么,唉。。。
#2
O MY GOD
#3
看了楼主的题目简单的做了下
可能还有不完善的地方
可能还有不完善的地方
#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;
}
#4
楼上的代码很清晰
#1
看见数据结构恶心,不知道为什么,唉。。。
#2
O MY GOD
#3
看了楼主的题目简单的做了下
可能还有不完善的地方
可能还有不完善的地方
#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;
}
#4
楼上的代码很清晰