二叉树结点中添加父指针parent,请给二叉树bt填写父指针。 typedef struct BiTNode2( TElemType data; Struct BiTNode2 *Ichild , *rchild; Struct BiTNode2 *parent; ) BiTNode2 ,*BiTree2; 递归算法编制,void createParent(BiTree2&bt)
时间: 2024-03-01 17:55:25 浏览: 50
题目:编写递归算法,将二叉树中所有结点的左右子树相互交换 - READ.doc
5星 · 资源好评率100%
好的,我来回答你的问题。
这里给出的是一个二叉树的结构体定义,其中添加了一个指向父结点的指针parent。现在需要编写一个递归算法createParent,来填充这些父指针。
下面是createParent的递归实现:
```
void createParent(BiTree2& bt) {
if (bt == NULL) {
return;
}
if (bt->lchild != NULL) {
bt->lchild->parent = bt;
createParent(bt->lchild);
}
if (bt->rchild != NULL) {
bt->rchild->parent = bt;
createParent(bt->rchild);
}
}
```
这个算法的思路比较简单,就是对于每个结点,将它的左右子结点的parent指针指向它本身,然后递归处理左右子树即可。
需要注意的是,这里假设结点的左右子结点分别保存在lchild和rchild指针中,如果结点定义中使用其他名称需要相应地修改算法中的代码。
希望能够帮助到你!如果还有其他问题,请继续提问。
阅读全文