二叉树的深度(Depth)、链表的公共节点

版权声明: https://blog.csdn.net/qq_41880190/article/details/84893897

二叉树的最大深度

给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的距离。

如果二叉树为空,则深度为0 如果不为空,分别求左子树的深度和右子树的深度,取最大的再加1

代码实现

int maxdepth(TreeNode* root)
{
    //空树返回 0
    if(root == nullptr)
        return 0;
    //遍历左子树
    int left_depth = maxdepth(root->left);
    //遍历右子树
    int right_depth = maxdepth(root->right);
    return left_depth > right_depth ? left_depth : right_depth + 1;
}

二叉树的最小深度

给定一个二叉树,找出其最小深度。 二叉树的最小深度为根节点到最近叶子节点的距离。

判断左子树或右子树是否为空,若左子树为空,则返回右子树的深度,反之返回左子树的深度,如果都不为空,则返回左子树和右子树深度的最小值

代码实现

int mindepth(TreeNode* root)
{
    //访问根结点
    if(root == nullptr)
        return 0;
    //左树为空,返回右树
    else if(root->left == nullptr)
        return mindepth(root->right) + 1;
    //右树为空,返回左树
    else if(root->right == nullptr)
        return mindepth(root->left) + 1;
    //左右子树都不为空,返回最小值
    else if(root->left != nullptr && root->right != nullptr)
        return min(mindepth(root->left), mindepth(root->right)) + 1;
    //左右子树为空,返回 1
    else
        return 1;
}

二叉树的宽度

链表的公共结点

代码如下

ListNode* FindSameNode(ListNode* pHead1, ListNode* pHead2)
{
    //任意一个链表为空则返回 nullptr 
    if(pHead1 == nullptr || pHead2 == nullptr)
        return nullptr;
    int len1, len2, sublen;
    //计算链表 pHead1 的长度
    while(pHead1 != nullptr)
    {
        pHead1 = pHead1->pNext;
        len1++;
    }
    //计算链表 pHead2 的长度
    while(pHead2 != nullptr)
    {
        pHead2 = pHead2->pNext;
        len2++;
    }
    ListNode* pCur1 = pHead1;
    ListNode* pCur2 = pHead2;
    //较长的链表先走 sublen 步
    if(len1 > len2)
        sublen = len1 - len2;
    else
        sublen = len2 - len1;
    while(sublen--)
    {
        if(len1 > len2)
            pCur1 = pCur1->pNext;
        else
            pCur2 = pCur2->pNext;
    }
    //找公共结点
    while(pCur1 != pCur2)
    {
        //若链表结点 值相等则跳出循环,并返回
        if(pCur1->m_Value == pCur2->m_Value)
            break;
        pCur1 = pCur1->pNext;
        pCur2 = pCur2->pNext;
    }
    return pCur1;
}

猜你喜欢

转载自blog.csdn.net/qq_41880190/article/details/84893897