设一棵二叉树以二叉链表为存储结构 结点结构为(1child data rchild) 设计一个算法将二叉树中所有

大学 结点,结构,算法 已帮助 人

设一棵二叉树以二叉链表为存储结构,结点结构为(1child,data,rchild),设计一个算法将二叉树中所有结点的左、右子树相互交换。【福州大学1998四、2(10分)】

请帮忙给出正确答案和分析,谢谢!

热搜:二叉排序树的查找效率与二叉树的树形有关

答案解析

难度★★☆ 搜索
  • 正确答案:采用后序遍历和前序遍历都可以。以后序遍历为例: void exchange(BiTree bt) //将二叉树bt所有结点的左右子树交换 {if(bt){BiTree s; s=bt一>ichild;bt->ichild=bt->rchild;bt一>rchild=s;//左右子女交换 exchange(bt->ichild); //交换左子树上所有结点的左右子树 exchange(bt->rchild); //交换右子树上所有结点的左右子树
    采用后序遍历和前序遍历都可以。以后序遍历为例:voidexchange(BiTreebt)//将二叉树bt所有结点的左右子树交换{if(bt){BiTrees;s=bt一>ichild;bt->ichild=bt->rchild;bt一>rchild=s;//左右子女交换exchange(bt->ichild);//交换左子树上所有结点的左右子树exchange(bt->rchild);//交换右子树上所有结点的左右子树