剑指offer十题刷(二)

版权声明:允许转载,请注明文章出处 https://blog.csdn.net/Vickers_xiaowei/article/details/82919192

第一题

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
在这里插入图片描述

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
    {
        if(pHead1==NULL)return pHead2;
        if(pHead2==NULL)return pHead1;
        ListNode*head=NULL,*list1=pHead1,*list2=pHead2,*list=NULL;
        if(list1->val<list2->val)//判断哪个链表的头结点作为新链表的头结点
        {
            head=list1;
           list1=list1->next;
        }
        else
        {
            head=list2;
            list2=list2->next;
        }
        list=head;//要记录下新链表头结点作为返回值,list用来遍历新链表
        while(list1&&list2)
        {
            if(list1->val<list2->val)//取小的
            {
                list->next=list1;
                list1=list1->next;
            }
            else
            {
                list->next=list2;
                list2=list2->next;
            }
            list=list->next;//成功给新链表添加一个节点
        }
        if(list1)
        {
            list->next=list1;
        }
        if(list2)
        {
            list->next=list2;
        }
        return head;
    }
};

第二题

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
在这里插入图片描述
分析可知需要左右树同时向下走,进行比较,而题设只给了一个头结点,所以可以巧妙地设计一个重载函数,两个函数构成递归。

设计的这个构造函数有两个参数,分别来走左右节点,如此可递归解决。

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
    bool isSymmetrical(TreeNode* pRoot)
    {
        return isSymmetrical(pRoot,pRoot);
    }
    bool isSymmetrical(TreeNode*root1,TreeNode*root2)
    {
        if(root1==NULL&&root2==NULL)
            return true;
        if(root1==NULL||root2==NULL)
            return false;
        if(root1->val!=root2->val)
            return false;
        return isSymmetrical(root1->left,root2->right)&&isSymmetrical(root1->right,root2->left);
    }

};

第三题

下厨房

猜你喜欢

转载自blog.csdn.net/Vickers_xiaowei/article/details/82919192
今日推荐