首页 > 代码库 > 二叉树

二叉树

结构定义:

typedef struct BiTNode{    int data;    struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;

建立二叉树:

BiTree CreateBiTree(BiTree  T){    datatype ch;    //cout<<"请输入参数:"<<endl;    cin>>ch;    if (ch==0)    {        T=NULL;    }    else    {        T=new BiTNode; //申请动态内存        if(!T)            exit (OVERFLOW);        T->data=http://www.mamicode.com/ch;        //printf("请输入结点%d的左子结点: ",T->data);        cout<<"请您输入"<<T->data<<"左子树节点:";        T->lchild=CreateBiTree(T->lchild);//构造左子树        cout<<"请您输入"<<T->data<<"右子树节点:";        T->rchild=CreateBiTree(T->rchild);//构造右子树    }        return T;}

二叉树的深度:

int depth(BiTree root) {    int ld,rd;    if (root==NULL)    {        return 0;    }    ld = 1+depth(root->lchild);    rd = 1+depth(root->rchild);    return ld>rd?ld:rd;}

二叉树的遍历:

void preorder(BiTree T){ //先序遍历二叉树并输出    if(T != NULL)    {        printf("%d",T->data);        preorder(T->lchild);
//递归算法求叶子节点的个数    int leaf(BiTree T){        if(T==NULL)            return 0;        else if(T->lchild==NULL && T->rchild==NULL)            return 1;        else return leaf(T->lchild)+leaf(T->rchild);}

 

        preorder(T->rchild);    }}

计算节点总数:

//计算总节点总数int nodeTotal(BiTree T){   if(T== NULL) return 0;   else       return 1+nodeTotal(T->lchild)+nodeTotal(T->rchild);}

 

二叉树