数据结构 树常见算法问题

这篇博客探讨了树的数据结构,包括双亲表示法和孩子兄弟表示法,并提供了两种算法实现。算法4.2.1用于计算孩子兄弟表示法存储的森林的叶子节点数,而算法4.2.2则用于计算树的深度。这些算法对于理解和操作树结构至关重要。
摘要由CSDN通过智能技术生成

数据结构,树常见算法

算法和问题来自于试卷,辅导书,以及网络。

// 树的数据结构
typedef struct {            //树的双亲表示法
    char data;                   
    int parent;                //双亲下标
}PTNode;                    //节点
typedef struct {            //树的双亲表示法
    PTNode node[Maxsize];                   
    int n;                      //节点个数
}PTree;
//树的数据结构
typedef struct CSNode{            //树的双亲表示法
    char data;                   
    struct CSTNode *firstchild,*nextsibling;              //双亲下标
}CSNode,*CSTree;                    //节点

算法4.2.1

编程求以孩子兄弟表示法存储的森林的叶子节点数

分析:略

int Leaves(CSTree T)
{
	if(T==NULL)return 0;
	if(T->firstchild==NULL)
	return 1+Leaves(T->nextsibiling);
	if(T->firstchild!=NULL)
	return Leaves(T->nextsibiling)+Leaves(T->firstchild);
}

算法4.2.2

编程求以孩子兄弟表示法存储的树的深度

分析:略

int High(CSTree T)
{
	if(T==NULL)return 0;
	else
	return(Max(1+High(T->firstchild),High(T->nextsibiling))));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值