斐波那契数列 如何写算法求二叉树中某个结点的深度(大概思路)?
如何写算法求二叉树中某个结点的深度(大概思路)?
1,可以使用递归方法,2,先遍历根,3,递归函数,添加参数,记录当前根层。4查找节点对应的记录值。5返回节点层号的伪码://T node,l current layer,value,node value//Return-1:未找到,0-n:对应层,int get odelayer(T*node,int value,int l){int i=-1 if(node){if(node->value==value)Return l if(i=get odelayer(node->left,value,l 1)!=-1)//检查左子树,如果找到,返回I/if(I=get odeLayer(node->right,value,l 1)!=-1)//检查右子树,return I}return I}
int height(BiTree T){if(T==null)return 0U=height(T->lchild)v=height(T->rchild)if(U>N)return(u1)//n should be vreturn(v1)}n in if should be v。其思想是一个节点的深度是其两个子节点加1的最大值。在该算法中,u得到左子树的深度,V得到右子树的深度。那么这个节点的深度是u和V加1的最大值。要得到树的深度,首先要得到树中根节点的两个子节点的深度,比较两个子节点的深度,取最大值加1得到树的深度。根节点的两个子节点的深度是通过上述原理递归得到的。
关于求二叉树深度的递归算法?
Int BTREE depth(BT->lchild){//find the depth of binary tree if(BT==null)//empty tree returns 0return 0else{Int dep1=BTREE depth(BT->lchild)//递归调用逐层分析Int dep2=BTREE depth(BT->rchild)if(dep1>dep2)return dep2 1}}Int leave(bitnode*BT){//find二叉树中的叶节点数if(BT==null)返回0else{if(BT->lchild==null)&这是学习数据结构的练习。它使用递归形式。理解的时候需要考虑一下,但是函数相对简单。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。