剑指offer
Faded0104
这个作者很懒,什么都没留下…
展开
-
根据二叉树的中序遍历序列和前序遍历序列恢复出二叉树
节点结构体如下: typedef struct BinaryTreeNode { int value; struct BinaryTreeNode* left; struct BinaryTreeNode* right; }BinaryTree_Node; 背景知识: 前序遍历:访问顺序 根 左 右 中序遍历:访问顺序 左 根 右 所以,前序的第一个元素是整棵树的根节点,根节点后面先是左子树,然后右子树。中序序列中,根节点所在的位置的左边是根节点的左子树,右边是右子树。因此每次可根据..原创 2020-08-02 11:19:26 · 406 阅读 · 0 评论 -
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
#include #include using namespace std; //optimized code int find_2(int key,vector > vec) { int found = 0; if(vec.size() == 0 ) { return found; } int row = 0; int column = vec[0].size()-1; fo原创 2017-08-08 08:46:47 · 565 阅读 · 0 评论 -
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5
#include #include using namespace std; //参数是vector 实现 // Definition for binary tree struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(N原创 2017-08-09 11:24:02 · 470 阅读 · 0 评论 -
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
class Solution { public: void push(int node) { stack1.push(node); } int pop() { int t=0; if(stack2.empty()) { if(stack1.empty())原创 2017-08-09 14:25:41 · 724 阅读 · 1 评论 -
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数
#include #include using namespace std; int MinInOrder(vector rotateArray) { int result = rotateArray[0]; int index1 = 0; int index2 = rotateArray.size()-1; for(int i=index1+1;i<index2;++i) { i原创 2017-08-10 13:06:12 · 504 阅读 · 0 评论