C语言打一棵树,复制一棵树解决方案

本文讨论了一个关于复制树结构的问题,作者在尝试使用递归复制树的节点时遇到了困难,即如何为新节点创建并链接子节点。解决方案指出,在创建新节点时,需要先判断节点数量,然后根据数量动态分配内存来存储子节点,并通过递归调用复制子节点。此问题涉及到数据结构和递归算法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

复制一棵树

本帖最后由 yass8899 于 2013-01-24 12:51:22 编辑 复制一棵树的一部分,从开始复制的节点开始,打算用递归复制每个节点,可是不知道新节点如何指向孩子节点

struct node

{

...

int num_number; //孩子节点数

node **children; //指向children节点的指针

}

void copy_tree(node *node, node *T)

{

int i;

char number[12] = {0}; //if中使用

int n = node->num_children;

if (node == NULL)

T = NULL;

if(...)

{

.... //作节点的复制

}

else

{

....  //作节点的复制

}

for(i=0; i

copy_tree(node->children[i], T->children[i]); //想用递归对孩子节点复制,但新节点是没有孩子节点,怎么办? 即不存在T->children. 怎样复制孩子,再把孩子节点接上去?

}

请高手指点,谢谢!

------解决方案--------------------------------------------------------

//楼主你写的代码逻辑有些错误。我修正了一下。

struct node

{

...

int num_number; //孩子节点数

node **children; //指向children节点的指针

}

void copy_tree(node *node, node *T)

{

int i;

char number[12] = {0}; //if中使用

int n = node->num_children;

if (node == NULL){

T = NULL;

}

else{//1. add else here

//2. TODL: copy value of node to T here

//please add here on your own

if(...){//3. n==0

//4. T->children = NULL;

}

else//n>0

{

//5. create n node*

T->children = (node **)malloc(sizeof(node *));

//recursion

for(i=0; i

copy_tree(node->children[i], T->children[i]);

}

//想用递归对孩子节点复制,但新节点是没有孩子节点,怎么办?

//即不存在T->children. 怎样复制孩子,再把孩子节点接上去?

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值