• 代码题(4)— 反转链表、二叉搜索树与双向链表


    1、题目:反转一个单链表。

    示例:

    输入: 1->2->3->4->5->NULL
    输出: 5->4->3->2->1->NULL
    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
                val(x), next(NULL) {
        }
    };*/
    class Solution {
    public:
        ListNode* ReverseList(ListNode* pHead) {
            if(pHead == nullptr || pHead->next == nullptr)
                return pHead;
            ListNode* cur = pHead;
            ListNode *pre = nullptr, *nex = nullptr;
            while(cur != nullptr)
            {
                nex = cur->next;
                cur->next = pre;
                pre = cur;
                cur = nex;
                
            }
            return pre;
        }
    };

    2、 二叉搜索树与双向链表

     输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

    class Solution {
    public:
        TreeNode* Convert(TreeNode* pRoot)
        {
            //递归
            //判断边界
            if(pRoot==nullptr)
                return pRoot;
            if(pRoot->left==nullptr && pRoot->right==nullptr)
                return pRoot;
            // 1.将左子树构造成双链表,并返回链表头节点
            TreeNode *left=Convert(pRoot->left);
            // 2.定位至左子树双链表最后一个节点
            TreeNode *p=left;
            while(p!=nullptr && p->right!=nullptr)
                p=p->right;
            // 3.如果左子树链表不为空的话,将当前root追加到左子树链表。
            if(left!=nullptr)
            {
                p->right=pRoot;
                pRoot->left=p;
            }
            // 4.将右子树构造成双链表,并返回链表头节点
            TreeNode *right=Convert(pRoot->right);
            // 5.如果右子树链表不为空的话,将该链表追加到root节点之后
            if(right!=nullptr)
            {
                pRoot->right=right;
                right->left=pRoot;
            }
            // 6.根据左子树链表是否为空确定返回的节点。
            return left!=nullptr?left:pRoot;
        }
    };
  • 相关阅读:
    mongodb删除指定字段
    nodejs地理坐标转换
    浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务)
    利用Django进行微信支付接口的开发
    SpringBoot常用注解
    构建一个敏感词字典树
    Java异常统一处理
    [一天一个小知识]instanceof
    [总结]实现表格中对checkbox的操作
    小程序的数据绑定
  • 原文地址:https://www.cnblogs.com/eilearn/p/9206241.html
Copyright © 2020-2023  润新知