以二叉链表为存储结构,写一算法交换各结点的左右子树

来源:百度知道 编辑:UC知道 时间:2024/09/21 08:12:03

问题:以二叉链表为存储结构, 写一算法交换各结点的左右子树。

答案:
要交换各结点的左右子树,最方便的办法是用后序遍历算法,每访问一个结点时把两棵子树的指针进行交换,最后一次访问是交换根结点的子树。

void ChangeBinTree(BinTree *T)
{ //交换子树
if(*T)
{ //这里以指针为参数使得交换在实参的结点上进行后序遍历
BinTree temp;
ChangeBinTree(&(*T)->lchild);
ChangeBinTree(&(*T)->rchild);
temp=(*T)->lchild;
(*T)->lchild=(*T)->rchild;
(*T)->rchild=temp;
}
}

递归的方法,节点类型是BiNode
void jiaohuan(BiTREE &L)
{BiNode *p=L;
if(L->lchild!=NULL&&L->rchild!=NULL)
{jiaohuan(L->lchild);
jiaohuan(L->rchild);
p=L->lchild;L->lchild=L->rchild;L->rchild=p;
}
}

以二叉链为存储结构,写一算法求二叉树的叶子结点个数 设二叉树以二叉链表为存储结构,编写一个后续遍历二叉树的非递归算法 以二叉链表作为存储结构,是编写二叉树高度的算法? 以二叉链表存储结构,试编写非递归的前序遍历算法(c描述) 假设以二叉链表存储的二叉数中,每个结点所含数据结构元素均为单字母,试编写算法,按树状打印二叉树的算 用C语言编写:建立一棵以二叉链表结构存储的二叉树,并对其进行遍历。求该二叉树中的结点个数等操作。 利用二叉链表作为存储结构建立一棵二叉树,每个结点中存放一种水果名(由键盘输入),结点数不少于5个。 采用二叉链表存储结构,按前根序输入二叉树的结点序列,建立二叉树并中根序遍历该二叉树,计算叶子节点的个数 已知用二叉链表存储二叉树,判断两棵二叉树是否相等 五. 试编写一算法,判别某一二叉树是否为二叉排序树.