摘要: 题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 解题思路 基本路线仍未进行二叉树遍历,只不过在路过一个节点时需要对该节点走过的路径长度 阅读全文
posted @ 2019-10-05 20:08 fancy_li 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解题思路 后序遍历,顾名思义根节点位于尾部,故可将一个序列分为左子树序列、右子树序列和根节点,对于两个子序列又可分别验证是否是二搜索叉树的后序序列,即 阅读全文
posted @ 2019-10-05 18:53 fancy_li 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解题思路 按照从左往右从上到下的顺序打印节点,需要我们维护一个队列,这个队列放入元素的顺序是访问队头节点(起始先放入根节点),则若当前节点的左右子树非空,则将左右子节点依次放入队尾,对所有节点执行此操作,然后按顺序遍历队列。 C++代 阅读全文
posted @ 2019-10-05 17:14 fancy_li 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长 阅读全文
posted @ 2019-10-05 16:57 fancy_li 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 解题思路 要求在O(1)时间内完成,由于栈后进先出的原则,不能出现破坏栈结构的事情。因而采用以空间换时间的思路,建立辅助栈,辅助栈与数据栈的出入栈操作同步进行,区别在于数据栈压入当前元素 阅读全文
posted @ 2019-10-05 10:48 fancy_li 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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. 解题思路 此题为以 阅读全文
posted @ 2019-10-05 10:20 fancy_li 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 解题思路 这一问题明显,在进行递归遍历节点时,将根节点的左右子树进行交换,因此完成树的遍历即可。 C++实现代码 /* struct TreeNode { int val; struct TreeNode *left; struct 阅读全文
posted @ 2019-10-05 09:35 fancy_li 阅读(100) 评论(0) 推荐(0) 编辑