摘要:
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNo... 阅读全文
摘要:
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。一开始想这道题毫无思路,如果蛮来,首先创建好正常的链表,然后考虑sibling这个分量,则需要O(n^2)的时间复杂度,然后一个技巧便可以巧妙的解答此题。看图便知。首先是原始的链表然后我们还是首... 阅读全文
摘要:
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。\注意find中最后要pop_back()。 1 /* 2 struct TreeNode { 3 int val; 4 struct Tree... 阅读全文
摘要:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。后序遍历,根在最后。前半部分为左子树,全部小于根,之后进入右子树,均大于等于根,若在右子树中出现小于根的,则肯定不是后序遍历。 1 class Solution ... 阅读全文
摘要:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。不要忘记判断root==NULL,不要忘记q.pop(); 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *r... 阅读全文
摘要:
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。顺序为:push[middle]==... 阅读全文
摘要:
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。输出min的话,需再定义一个stack,当push的值大于最小值时,压入最小值,若小于的话,压入value。 1 class Solution { 2 private: 3 stack s; 4 stack ass... 阅读全文
摘要:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.开始一直想着while循环里只做一次写入... 阅读全文
摘要:
转自:http://www.cnblogs.com/dolphin0520/archive/2011/04/03/2004869.html指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法。1.指针和引用的定义和性质区别:(1)指针:指针是一... 阅读全文
摘要:
转自:http://blog.csdn.net/starlee/article/details/2062586有下面的一个简单的类: 1 class CNullPointCall 2 { 3 public: 4 static void Test1(); 5 void Test2();... 阅读全文