标签:style blog color div sp log c amp new
结构定义:
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=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); }
标签:style blog color div sp log c amp new
原文地址:http://www.cnblogs.com/Flyzhcong/p/3978178.html