摘要:
1 //二叉搜索树的后序遍历序列 2 3 // 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 4 // //* 5 6 // *首先知道什么是二叉搜索树? 7 // *即左子树结点的值都小于根节点,右子树结点的值都大于根节点。 8 // *然后再了解什么是后序遍历? 9 //... 阅读全文
摘要:
1 从上到下打印二叉树 2 //题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 3 ////思路:其实就是广度优先遍历思想,即层次遍历 4 struct TreeNode 5 { 6 int val; 7 TreeNode* left; 8 TreeNode* right; 9 TreeNode(int x):val(x), lef... 阅读全文
摘要:
1 //栈的压入、弹出序列 2 //题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。 例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列, 但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 3 4 //思路:建立一个辅助... 阅读全文
摘要:
1 包含min函数的栈 2 //题目:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 3 //思路:常规思路===每次压入一个元素,将栈中所有的元素进行排序,让最小的元素位于栈顶, 这样就能再O(1)时间内得到最小元素。但是不能保证最后压入栈的元素能够先出栈。此时就不再是数据结构了。 4 //换思维:每次压入一个元素,就将其与当前元素做比较,如果该元... 阅读全文
摘要:
1 顺时针打印矩阵 2 //题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 3 class Solution 4 { 5 public: 6 vector p... 阅读全文
摘要:
如何在字符串表达的数字上模拟加法以及把字符串表达的数组打印出来 //题目://如何在字符串表达的数字上模拟加法,二是把字符串表达的数字打印出来。 //思想:字符串中的个位+1操作 bool Increment(char* number) { int nTakeOver = 0;//进位标识符 bool isFlowOver = false;//是否溢出 //如何将字符串中... 阅读全文
摘要:
1 二叉树的镜像 2 //操作给定的二叉树,将其变换为源二叉树的镜像。 3 //二叉树的镜像定义:源二叉树 4 8 5 / \ 6 6 10 7 / \ / \ 8 5 7 9 11 9 镜像二叉树 10 8 11 ... 阅读全文
摘要:
1 2 //题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)/* 3 struct TreeNode 4 { 5 int val; 6 struct TreeNode *left; 7 struct TreeNode *right; 8 TreeNode(int x) :val(x), left(N... 阅读全文