二、求树中所有节点的深度和
其中树是多叉的,每个节点保存的是指向孩子和兄弟的指针,根节点的深度为1,依次第二层的深度都为二,以此类推
struct TreeNode//结构体
{
TreeNode* first_child;
TreeNode* next_sibling;
TreeNode():first_child(NULL),next_sibling(NULL){}
};
int depth1(TreeNode* pNode,int &depth)
{
if(pNode==NULL)
return depth;
int child=0,sibling=0;
if(pNode->next_sibling!=NULL)
sibling=depth1(pNode->next_sibling, depth);
if(pNode->first_child!=NULL)
{ int d=depth+1;
child=depth1(pNode->first_child, d);}
return (depth)+child+sibling;//当前的节点深度+孩子的节点深度+右兄弟的节点深度和
}
int depth(TreeNode* root)//主函数
{
if(root==NULL)
return 0;
int depth=1;
depth=depth1(root, depth);//调用函数
return depth;
}