二叉树的建立
按先序遍历建立二叉树的二叉链表
按下列顺序读入字符
ABC##DE#G##F###
void CreatBinTree(BinTree &T){ //这里的T是指将被建立的二叉树 cin>>ch; if(ch=='#') T=NULL; else{ T=new BinNode; T->datd=ch; CreatBinTree(T->lchild);//构造左子树 CreatBinTree(T->rchild);//构造右子树 } }
复制二叉树
int Copy(BinTree T,BinTree &NewT){ if(T==NULL){ NewT=NULL; return 0; //如果是空树返回0; } else{ NewT=new BinNode; NewT->data=T->data; Copy(T->lchild,NewT->lchild); Copy(T->rchild,NewT->rchild); } }
计算二叉树深度
#include<algorithm> int Depth(BinTree T){ if(T==NULL){ return 0; } else{ m=Depth(T->lchild); n=Depth(T->rchild); return max(m,n)+1; } }
计算二叉树结点总数
int NodeSum(BinTree T){ if(T==NULL) return 0; else return NodeSum(T->child)+NodeSum(T->rchild)+1; }
计算二叉树叶子节点数
int LeadSum(BInTree T){ if(T==NULL) return 0; if(T->lchild==NULL && T->rchild==NULL) return 1;//如果是叶子节点返回1 else return LeadSum(T->lchild)+LeadSum(T->rchild); }