二叉树的存储结构类型定义如下:typedef int DataType;typedef struct node{DataType

二叉树的存储结构类型定义如下:
typedef int DataType;
typedef struct node
{DataType data; //data是数据域
struct node *lchild,*rchild; //分别指向左右孩子
}BinTNode;
typedef BinTNode *BinTree;
阅读下列算法,并回答问题。
int height(BinTree T)
int lhigh=0,rhigh=0;
if(T==NULL)return 0;
else{
lhigh=height(T> Ichild);
rhigh=height(T-> rchild);
if(lhigh> rhigh)return lhigh+1;
else return rhigh+1;
}
}
void f31(BinTree T)
{
int leftHigh=0,rightHigh=0;
BinTree temp;
if(T==NULL)return;
else{
if(height(T-> lchild)<height(T> rchild)){
temp=T> lchild;
T-> lchild=T-> rchild;
T-> rchild=temp;
}
}
f31(T-> lchild);
f31(T-> rchild);
return;
}
(1)设二叉树T如下图所示,画出执行f31(T)后得到的二叉树T1。

(2)给出函数f31()的功能。


【正确答案】:

(1)

(2)函数f31()的功能是:将二义树T的每个结点的高度较高的子树放到左子树位置,高度较矮的子树放到右子树位置。