![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
kkk777kk
这个作者很懒,什么都没留下…
展开
-
剑指offer09 两个栈实现一个队列(中等)题解
剑指offer09 两个栈实现一个队列基本思路:可以用一个栈保存入队的数据,另一个栈保存出队的数据。当数据由入队栈弹入出队栈时,栈底的元素被弹至栈顶,可以实现队列的“先进先出”。时间复杂度O(1):入队操作时间复杂度为O(1),对于出队,每个元素最多被插入和弹出出队栈一次,因此平均下来每个元素出队操作时间复杂度为O(1)。空间复杂度O(n):需要使用两个栈来存储队列元素。class CQueue {public: CQueue() { } stack<in原创 2020-11-04 15:54:45 · 261 阅读 · 0 评论 -
剑指offer08二叉树的下一个结点(中等)题解
剑指offer08二叉树的下一个结点(中等)题解1.若该结点右子树不为空,则中序遍历的下一个结点是其右子树的最左端;2.若该结点右子树为空,则使用while()循环找到是其父节点的左结点的结点。/*struct BinaryTreeNode { int m_nValue; struct BinaryTreeNode *m_pLeft; struct BinaryTreeNode *m_pRight; struct BinaryTreeNode *m_pPare原创 2020-11-04 09:58:31 · 835 阅读 · 1 评论 -
剑指offer07重建二叉树题解
剑指offer07重建二叉树题解题目链接:https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/递归重构:1.首先通过前序遍历中的第一位,确定整个二叉树的根root;2.在中序遍历中,root左边的序列为左子树,右边的序列即为右子树;3.确定前序遍历中的左右子树序列;4.*通过定义四个指针来确定左右子树的起始位置;5.*将左子树和右子树放入递归中,重复1~3;6.左右子树不再有节点时则返回NULL。/**原创 2020-11-02 15:40:29 · 170 阅读 · 0 评论