
二叉树
文章平均质量分 51
菲菲飞xiu
这个作者很懒,什么都没留下…
展开
-
LintCode-二叉树的前序遍历
题目描述:给出一棵二叉树,返回其节点值的前序遍历。 样例: 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3] 做题思路:用递归算法,从根节点开始,先遍历左子树再遍历右子树,存放在数组中。 关键代码:class Solution { public: /** * @pa原创 2017-04-07 20:11:21 · 163 阅读 · 0 评论 -
LintCode-二叉树专题总结
二叉树提交记录: 专题感想:这一专题运用的都是递归函数,让我对递归函数的运用更熟练了,前面的遍历、深度、克隆、等价现在看来都不算难,后面剩的几个题个人认为挺有难度的,越做到后面做题的时间越长,甚至有的题没有思路,研究的时间比较长,对递归函数的运用的要求也越来越高,有的题网上搜了答案,看懂了之后觉得不难,但就是自己想不出来,还有和数组链表相结合的题,一点点的增加难度,挺有意思的,了解了更多原创 2017-04-20 15:17:23 · 252 阅读 · 0 评论 -
LintCode-子树
题目描述: 有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。 注意事项 若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。 样例: 下面的例子中 T2 是 T1 的原创 2017-04-20 15:02:18 · 214 阅读 · 0 评论 -
LintCode-把排序数组转换为高度最小的二叉搜索树
题目描述: 给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。 注意事项 There may exist multiple valid solutions, return any of them. 样例: 给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \ 1原创 2017-04-20 12:35:06 · 505 阅读 · 0 评论 -
LintCode-二叉树的所有路径
题目描述: 给一棵二叉树,找出从根节点到叶子节点的所有路径。 样例: 给出下面这棵二叉树: 1 / \ 2 3 \ 5 所有根到叶子的路径为: [ "1->2->5", "1->3" ] 做题思路: 题目要求在输出时,数组中输出的是一串路径,所以,在类内调用已写的递归函数,对递归函数进行编写:定义树的结点、数组对象和字符串。如原创 2017-04-15 09:22:01 · 223 阅读 · 0 评论 -
LintCode-翻转二叉树
题目描述:翻转一棵二叉树 样例: 1 1 / \ / \ 2 3 => 3 2 / \ 4 4 做题思路:用递归遍历左右子树,用swap交换结点的值。 关键代码: class Solution { public: /** * @param root: a TreeNode, the原创 2017-04-09 00:06:27 · 217 阅读 · 0 评论 -
LintCode-二叉树的最大节点
题目描述:在二叉树中寻找值最大的节点并返回。 样例: 给出如下一棵二叉树: 1 / \ -5 2 / \ / \ 0 3 -4 -5 返回值为 3 的节点。 做题思路:创建两个树结点,先赋初值,把根结点赋给它们,在考虑左子树和右子树不为空的情况下,用递归函数遍历左子树和右子树,赋给创建的left和right,再比较left和ro原创 2017-04-08 23:47:00 · 4134 阅读 · 0 评论 -
LintCode-克隆二叉树
题目描述: 深度复制一个二叉树。 给定一个二叉树,返回一个他的 克隆品 。 样例: 给定一个二叉树: 1 / \ 2 3 / \ 4 5 返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \ 4 5 做题思路:创建一个新的根节点,把原来的根节点的值赋给新的根结点,利用递原创 2017-04-08 21:13:33 · 279 阅读 · 0 评论 -
LintCode-等价二叉树
题目描述:检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。 样例: 1 1 / \ / \ 2 2 and 2 2 / / 4 4 就是两棵等价的二叉树。 1原创 2017-04-08 19:30:37 · 614 阅读 · 0 评论 -
LintCode-二叉树的最小深度
题目描述: 给定一个二叉树,找出其最小深度。 二叉树的最小深度为根节点到最近叶子节点的距离。 样例: 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最小深度为 2 做题思路: 如果根结点为空,返回0,若左子树原创 2017-04-07 23:11:36 · 265 阅读 · 0 评论 -
LintCode-二叉树的最大深度
题目描述: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的距离。 样例: 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最大深度为3. 做题思路: 如果根节点为空,返回0,用递归,一直遍历左子树,然后遍历右子树,然后直到遍历到空,由于递归的性质,再返回,返回的过程中一层一层原创 2017-04-07 22:54:22 · 308 阅读 · 0 评论 -
LintCode-二叉树的层次遍历
题目描述:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 样例: 给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \ 9 20 / \ 15 7 返回他的分层遍历结果: [ [3], [9,20], [15,7] ] 做题思路:创建队列,把根节点放入队列,建立一个length用来记录队列长度,把树的结点指针原创 2017-04-07 20:35:12 · 197 阅读 · 0 评论 -
LintCode-二叉树的后序遍历
题目描述:给出一棵二叉树,返回其节点值的后序遍历。 样例: 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [3,2,1] 做题思路:运用递归,先遍历左子树,再遍历右子树,最后遍历根,存入数组,返回数组。 关键代码: class Solution { /** * @param root原创 2017-04-07 20:33:35 · 182 阅读 · 0 评论 -
LintCode-二叉树的中序遍历
题目描述:给出一棵二叉树,返回其中序遍历 样例: 给出二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,3,2]. 做题思路:递归算法,先遍历左子树,在看根节点,再遍历右子树,遍历后的结点放进数组中,返回数组。 关键代码:class Solution { /** * @param root:原创 2017-04-07 20:29:08 · 179 阅读 · 0 评论 -
LintCode-二叉树拆成链表
题目描述: 将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的right 指针,来表示链表中的 next 指针。 注意事项 不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出。 样例: 1 \ 1 2 / \原创 2017-04-16 21:22:27 · 362 阅读 · 0 评论