有关二叉树的简单问题

论坛 期权论坛 期权     
hu6321   2018-4-26 13:43   7303   1
Status BiTree_Revolute(BiTree T)//左右子树交换{ if(!T) return OK; BitNode *temp; if(T->lchild!=NULL&&T->rchild!=NULL) {  temp=T->lchild;        T->lchild=T->rchild;  T->rchild=temp; } BiTree_Revolute(T->lchild); BiTree_Revolute(T->rchild); ...Status BiTree_Revolute(BiTree T)//左右子树交换{ if(!T) return OK; BitNode *temp; if(T->lchild!=NULL&&T->rchild!=NULL) {  temp=T->lchild;        T->lchild=T->rchild;  T->rchild=temp; } BiTree_Revolute(T->lchild); BiTree_Revolute(T->rchild); return OK;}
这个为什么会有2个递归呀,一次 BiTree_Revolute(T->lchild);不就把左右结点互换了么。?
还有构建二叉树的时候,是

这个意思是先构造左子树是吧,?还是说就左右一起构造的,,递归不大明白
展开

分享到 :
0 人收藏

1 个回复

倒序浏览
2#
GTA小鸡  1级新秀 | 2018-4-30 02:30:54 发帖IP地址来自
if(T->lchild!=NULL&&T->rchild!=NULL)
{
  temp=T->lchild;
        T->lchild=T->rchild;
  T->rchild=temp;
}
当左右子节点均不为空时,交换这两个子节点。
BiTree_Revolute(T->lchild);
BiTree_Revolute(T->rchild);
接下来递归分别对左右两个子树做交换节点操作。
第一步的交换操作只是互换了当前节点的左右子节点,因此需要第二步再分别递归操作当前节点的左右子树。
构造子树同理
首先给当前节点分配空间,然后递归分别构造左右子树
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP