首页 > 代码库 > 二叉树
二叉树
结构定义:
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);}
二叉树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。