- 博客(23)
- 收藏
- 关注
原创 重建二叉树
/*题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。*/class Solution {public: //根据前序遍历和中序遍历重建二叉树 TreeNode* reCon...
2018-07-31 21:52:27 91
原创 判断二叉树后续遍历
/*输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。*///非递归//非递归也是一个基于递归的思想://左子树一定比右子树小,因此去掉根后,数字分为left,right两部分,right部分的//最后一个数字是右子树的根他也比左子树所有值大,因此我们可以每次只看有子树是否符合条件//即可,即使...
2018-07-31 11:19:53 252
原创 栈的压入、弹出序列
/*输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)*/class Solution {public: bool IsPop...
2018-07-30 17:41:55 108
原创 定义栈的数据结构
//定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。class Solution {public: void push(int value) { st.push(value); if (smin.empty()) smin.push(value); if (s...
2018-07-30 16:52:20 1134
原创 合并有序链表
/*输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。*///递归方法,消耗内存多//创建一个新的结点(链表)class Solution {public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if (pHead1 == NULL) re...
2018-07-30 11:42:40 91
原创 输入一个链表,反转链表后,输出新链表的表头。
/*输入一个链表,反转链表后,输出新链表的表头。将数据压栈后重新放入,得到一个反转的链表,原来的表头仍为表头*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { std::stack<int> st; ListNode* p = pHead; ...
2018-07-30 10:53:10 1806
原创 输入一个链表,输出该链表中倒数第k个结点。
class Solution {public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { ListNode *p, *q; p = q = pListHead; int i = 0; for (; p != NULL; i++) { ...
2018-07-30 10:38:56 136
原创 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
class Solution{public: void push(int node) { stack1.push(node); } int pop() { if (stack2.empty()) { int p = stack1.size(); for (int i = 0; i < p; i++) { stack2.push(stack1...
2018-07-30 10:01:45 199
原创 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
class Solution {public: vector<int> printListFromTailToHead(struct ListNode* head) { std::stack<int> nodes; vector<int> outnodes; ListNode *pNode = head...
2018-07-30 09:36:14 418
原创 背包问题
// bag_pro.cpp : 定义控制台应用程序的入口点。//// stdafx.cpp : 只包括标准包含文件的源文件// bag.pch 将作为预编译头// stdafx.obj 将包含预编译类型信息// TODO: 在 STDAFX.H 中引用任何所需的附加头文件,//而不是在此文件中引用// bag.cpp : 定义控制台应用程序的入口点。//#includ...
2018-07-30 09:07:10 150
转载 动态规划
1. 概述动态规划( Dynamic Programming, DP)是最优化问题的一种解决方法,本质上状态空间的状态转移。所谓状态转移是指每个阶段的最优状态(对应于子问题的解)可以从之前的某一个或几个阶段的状态中得到,这个性质叫做最优子结构。而不管之前这个状态是如何得到的,这被称之为无后效性。DP问题中最经典的莫过于01背包问题:有N件物品和一个容量为V的背包。第i件物品的费用是c...
2018-07-26 16:08:37 90
原创 C++排序:冒泡排序、插入排序、选择排序、快速排序
#include "stdafx.h"#include <iostream>using namespace std;//冒泡排序 O(log(n)):每轮选出最大值void bubblesort(int array[], int n){ //排序 for (int i = 0; i < n - 1; i++) { for (...
2018-07-26 15:40:16 189
原创 冒泡排序
// search_sort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;//冒泡排序void bubblesort(int array[], int n){ //排序 for (int i = 0; i < n-1; i++) { ...
2018-07-25 20:46:46 92
原创 顺序查找、折半查找
#include "stdafx.h"#include <iostream>using namespace std;//顺序查找:依次遍历查找与value相同的值(无论有序、无序):O(n)int SequenceSearch(int array[], int value, int n){ for (int i = 0; i < n; i++) {...
2018-07-25 20:07:01 220
转载 查找算法
http://www.cnblogs.com/butyoux/archive/2013/01/15/2861291.html下列五种查找算法,除顺序查找外,其他算法的思路基本相同: 先对数据按某种方法进行排序,然后使用相应的规则查找。因此,搞清排序算法才是关键。一、顺序查找 条件:无序或有序队列。 原理:按顺序比较每个元素,直到找到关键字为止。 时间复杂度:O(...
2018-07-25 16:45:40 112
原创 c++图的广度优先遍历、深度优先遍历
#include "stdafx.h"#include <iostream>#include <vector>using namespace std;/*图的遍历深度优先遍历(前序遍里):邻接矩阵(无向图,对称)广度优先遍历(分层遍历)*//*struct Node{int elem;Node *link;};*/class Node{pu...
2018-07-25 15:48:09 6516
原创 C++ 二叉树
/*二叉树:数组表达二叉树,不存在为0 索引从0开始父节点下标*2+1 左节点父节点下标*2+2 右节点1.树的创建,销毁2.节点搜索(指定下标)3.节点添加,删除(指定下标,左右等)4.节点遍历(遍历数组)*/#include "stdafx.h"#include <iostream>using namespace std;/*st...
2018-07-24 16:31:26 164
原创 C++ 环形队列 入队 出队 遍历
#include "stdafx.h"#include <iostream>using namespace std;/*struct Node{int elem;Node *link;};*/class STACK{public: STACK(int size); //栈初始空间,容量,栈顶 ~STACK(); //回收内存 ...
2018-07-24 11:32:20 1297
原创 C++ 对象创建
1,使用 new:使用堆存储,创建的内存初始化后,需要在程序的最后释放指针,否则存在安全隐患;2. 不使用:直接创建对象,此时的对象通过构造函数初始化,当不在使用时,利用自身析构函数释放。...
2018-07-24 10:20:44 131
原创 静态栈
#include <iostream>using namespace std;/*struct Node{ int elem; Node *link;};*/class STACK{ public: STACK(int size); //栈初始空间,容量,栈顶 ~STACK(); //回收内存 ...
2018-07-24 09:37:07 340
转载 C++ 链栈
#include <iostream>using namespace std;struct Node { int elem; Node *link;};class Stack {public: Stack(); //构造函数,构造一个空栈 ~Stack(); //析构函数,清除掉栈 void ...
2018-07-23 17:29:25 161
原创 C++ 链表创建、插入、删除、遍历
#include "stdafx.h"#include <iostream>using namespace std;struct Node { int data; Node *next;};class Linklist{public : Linklist(); ~Linklist(); void CreatList1(in...
2018-07-23 17:21:40 1428
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人