【发布时间】:2015-10-15 05:10:30
【问题描述】:
我正在尝试用 C 编写一个树复制函数:
void tree_copy(treenode *source, treenode **dest)
{
treenode *newtree; //the new tree will be created using this as root
treenode **bkup = &newtree; //pointer to pointer, to keep backup of head of newtree
/*
Code to create new tree
Traverses using *newtree
And leaves *newtree pointing at last node created
But *bkup still contains the address of the head node, right?
*/
*dest = *bkup; //assign the new tree created to the parameter
}
//I'm trying to invoke it like this:
int main(void)
{
treenode *t1, *t2;
create_tree(&t1); //tested, already written function to create a tree. No bugs.
tree_copy(t1, &t2);
preorder(t2); //tested, already written function for preorder traversal.
}
应该包含新创建的树的根 (t2) 的节点在此操作之后仍然保持 NULL。 为什么会这样?备份新树起始节点的逻辑有什么问题?
任何帮助将不胜感激。
【问题讨论】:
标签: c pointers data-structures