交换所有节点的左右子树
void swaptree(BiTree &T){ BiTree temp; if(T){ swaptree(T->lchild); swaptree(T->rchild); temp=T->lchild; T->lchild=T->rchild; T->rchild=temp; } }
判断两个树是否相似(只有根节点或者是为空)
int similartree(BiTree &T1,BiTree &T2){ int s1,s2; if(T1==NULL&&T2==NULL){ return 1; } if(T1==NULL||T2==NULL){ return 0; } s1=similartree(T1->lchild,T2->rchild); s2=similartree(T2->lchild,T2->rchild); return s1*s2; }
将给定的表达式树转化为等价的中缀表达式
void BitreeToExp(BiTree &T,int depth){ if(T==NULL) return; if(T->lchild==NULL&&T->rchild==NULL){ cout<<T->data;//输出操作数 } else{ if(depth>1){cout<<‘(‘;} BitreeToExp(T->lchild,depth+1); cout<<T->data;//输出操作符 BitreeToExp(T->rchild,depth+1); if(depth>1){cout<<‘)‘;}//若有一层子表达式,则增加一成括号 } } void BitreeToE(BiTree &T){ BitreeToExp(T,1); }
原文:https://www.cnblogs.com/Yshun/p/11628497.html