求树的某一结点的深度

求树的值为x的结点的深度

求树中的元素值为elem的节点的深度(假设树中元素各不相同)

算法思想:采用递归算法,每调用一次递归函数,使level++,设置判定条件,当(T->data==x),将level值赋给depth。

1.二叉链表表示树

void Depth_Elem(BiTree T,int level,int *depth,ElemType elem){
	if(T!=NULL){
		level++;
		if(T->data==x) depth = level;//判定条件
	}
	Depth_Elem(T->lchild,level,depth,x);//对左子树进行递归调用
	Depth_Elem(T->rchild,level,depth,x);//对右子树进行递归调用
}
  1. 兄弟孩子表示法
void Depth_Elem(CSTree T,int level,int *depth,ElemType elem){
	 if(T!=NULL){
		 level++;
		 if(T->data==x) depth = level;
	 }
	 Depth_Elem(T->firstchild,level,depth,x);
	 Depth_Elem(T->nextsibling,level-1,depth,x);//在对兄弟结点进行调用时,由于先前对level进行了+1处理,而兄弟结点与原结点位于同一层,故应进行-1操作进行递归调用。
}

(本质思想是一样的,只是在递归调用是对level处理不同)

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值