方法一:使用非递归的方式,基于前序遍历的方法,与sametree方法的不同在于symmetric需要一个从做节点遍历,一个从右节点遍历 方法二:使用递归的方法,与sametree方法类似 Read More
posted @ 2017-04-15 11:30 chengcy Views(116) Comments(0) Diggs(0)
方法一:使用递归的方法 方法二:使用非递归的方法,前序遍历一一比较 Read More
posted @ 2017-04-15 11:08 chengcy Views(140) Comments(0) Diggs(0)
方法一:递归的方法,使用一个flag记录不同层次的遍历顺序,这里需要注意使用vector中insert操作 方法二:非递归方法,使用队列数据结构 Read More
posted @ 2017-04-15 10:42 chengcy Views(103) Comments(0) Diggs(0)
方法一:最简单的方式是traversal I 中的结果直接reverse就可以 同样可以采用递归的方式 方法二:这个题目除了可以使用栈数据结构,也可以使用队列数据结构 Read More
posted @ 2017-04-14 22:20 chengcy Views(107) Comments(0) Diggs(0)
思路一:使用非递归方式,当时还是需要注意每当一个算法写完后,检查是否处理到根节点或者list为空的情况 思路二:采用递归的方式,这里使用一个额外参数记录了层次遍历的深度 Read More
posted @ 2017-04-02 11:18 chengcy Views(129) Comments(0) Diggs(0)
思路一:递归版本 思路二:非递归版本,前序遍历中使用了一个额外的指针,这里使用times记录节点出栈的次数,更加方便直观 Read More
posted @ 2017-04-02 10:29 chengcy Views(108) Comments(0) Diggs(0)
思路一:递归版本 思路二:非递归版本,一般二叉树的中序遍历需要记录节点出栈的次数,在中序遍历中,当节点第二次出栈时才输出对应值,这里巧妙的使用一个额外的指针实现了这个功能 以上两种方法的时间和空间复杂度都是O(n); 思路三:使用Morris方法中序遍历,空间复杂度是O(1) Read More
posted @ 2017-04-01 20:58 chengcy Views(118) Comments(0) Diggs(0)
思路一:采用递归的方法,每个节点访问一遍,时间复杂度O(n),空间复杂度O(n) 思路二:非递归实现,过程中使用了栈,时间和空间复杂度同上 思路三:采用morris遍历方式,时间复杂度同上,但是空间复杂度O(1):算法理解在此 关键在于将当前子树的中的最大值(最后遍历)的右指针指向根节点,以便于左边 Read More
posted @ 2017-04-01 20:06 chengcy Views(132) Comments(0) Diggs(0)
思路一:使用一个vector记录每一个index出现的次数 方法二: 使用两个指针记录0和1的边界 Read More
posted @ 2017-03-31 22:41 chengcy Views(124) Comments(0) Diggs(0)
思路:可以直接使用merge two list中的函数,这里的时间复杂度O(n1+...),空间复杂度O(1),但运行中提示time limited exceeded,也可以直接将lists中数字存储在vector中,排序即可,这里时间复杂度O(Nlog(N)),空间复杂度(N); 思路二:使用归并 Read More
posted @ 2017-03-31 09:35 chengcy Views(111) Comments(0) Diggs(0)