合并二叉树
typedef struct BiTNode{
ElemType data;
struct BiTNode* lchild;
struct BiTNode* rchild;
}BiTNode,*BiTree;
BiTree mergeTree(BiTree T1,BiTree T2){
if(!T1)
return T2;
if(!T2)
return T1;
BiTree T=(BiTree)malloc(sizeof(BiTNode));
T->data=T1->data+T2->data;
T->lchild=mergeTree(T1->lchild,T2->lchild);
T->rchild=mergeTree(T1->rchild,T2->rchild);
return T;
}
对称二叉树
bool isSymmetric(BiTree T){
if(T)
return isMirror(T->lchild,T->rchild);
else
return true;
}
bool isMirror(BiTree T1,BiTree T2){
if(!T1&&!T2)
return true;
else if(!T1||!T2)
return false;
else
return (T1->data==T2->data)
&&isMirror(T1->lchild,T2->rchild)
&&isMirror(T1->rchild,T2->lchild);
}
删除所有叶子结点
BiTree DeleteLeaf(BiTree T){
if(!T||(!T->lchild&&!T->rchild))
return NULL;
else{
T->lchild=DeleteLeaf(T->lchild);
T->rchild=DeleteLeaf(T->rchild);
}
return T;
}