2017百度面试现场coding算法二

二、求树中所有节点的深度和
其中树是多叉的,每个节点保存的是指向孩子和兄弟的指针,根节点的深度为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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值