第六章二叉树续
现在我们使用从左子结点开始寻找替换的结点,如果删除的结点是5,从结点5的左子结点3开始往右子树找,直到到达叶结点,找到的是叶结点4. 接着删除此叶结点,其方法和情况1、2相同,最后取代原结点5成为4. 如果删除的是结点3,此时左子结点2并没有右子结点,所以符合条件的就是结点2.删除的操作就成为删除一个没有右子树的结点2,然后将原结点3的值取代成为2.其完整的图形为: * * 程序实例:7_7.c 使用递归创建一棵二叉树,然后输入一个结点值后,使用二叉查找方式寻找结点,如果找到,就调用删除函数将结点删除,最后输出删除的结果。原二叉树为如下图形: * 6.8 二叉树的复制 在二叉树的使用上常常需要备份原来的二叉树,可以使用递归的方法复制二叉树。 复制函数使用和二叉树遍历相似的递归调用。 * 程序实例:7_8.c 使用递归方式创建二叉树,然后备份原来的二叉树,最后将原来的二叉树和备份的二叉树都输出出来。 程序说明:函数copybtree( )先创建左子树,然后创建右子树。 * 6.9 线索二叉树 在重新考虑前面说明的二叉树链表结构表示法,可以看出左右指针指向NULL的情况比实际有使用的情形还多。 所以A.J.Perlis与C.Thronton两位就把这些空的指针使用线索方式取代,称为“线索二叉树”(Threaded Binary Tree) 例如:现在有一棵二叉树,下图所示: *
原创力文档

文档评论(0)