作业帮 > 综合 > 作业

试编写计算二叉树深度、所有结点总数、叶子结点数、双孩子结点个数、单孩子结点个数的算法

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 18:37:02
试编写计算二叉树深度、所有结点总数、叶子结点数、双孩子结点个数、单孩子结点个数的算法
一点分都不该 看来你不急啊
再问: 我的分都浪费完了啊
再答: 怪你
再问: 帮帮忙啊 老师催着叫实验报告啊 老师也不帮忙改 自己改不了啊!
再答: typedef struct bnode{ struct bnode*lchild; struct bnode*rchild; void*data; }btree,*btreeptr; #define MAX(a,b) ((a)>(b)?(a):(b)) int bt_depth(btree*T) { if(T==NULL) return 0; else return MAX( bt_depth(T->lchild),bt_depth(T->rchild) )+1; } int bt_ncount(btree*T) { if(T==NULL) return 0; else return bt_ncount(T->lchild)+bt_ncount(T->rchild)+1; } int bt_leafcount(NULL) { if(T==NULL) return 0; else if( !T->lchild && !T->rchild) return 1; else return bt_leafcount(T->lchild)+bt_leafcount(T->rchild); } int bt_2kids_parent_count(btree*T) { if(T==NULL) return 0; else if (T->lchild &&T->rchild) return bt_2kids_parent_count(T->lchild)+bt_2kids_parent_count(T->rchild)+1; else return bt_2kids_parent_count(T->lchild)+bt_2kids_parent_count(T->rchild); } int bt_kid_parent_count(btree*T) { if(T==NULL) return 0; else if (T->lchild && !T->rchild) return bt_kid_parent_count(T->lchild)+1; else if(!T->lchild&& T->rchild) return bt_kid_parent_count(T->rchild)+1; else return bt_kid_parent_count(T->lchild)+bt_kid_parent_count(T->rchild); }