摘要: "120. 三角形最小路径和" 动态规划入门题 class Solution { public int minimumTotal(List triangle) { if (triangle.get(0).size() == 0) return 0; int[][] f = new int[trian 阅读全文
posted @ 2018-11-06 23:22 ACBingo 阅读(150) 评论(0) 推荐(0) 编辑
摘要: "119. 杨辉三角 II" 水题,题目有个进阶,要求空间复杂度是O(k),实际上就是时间换空间的做法。把问题的解法给成从下而上,递归即可。 懒得写递归了,直接套用上题 阅读全文
posted @ 2018-11-06 23:03 ACBingo 阅读(244) 评论(0) 推荐(0) 编辑
摘要: "118. 杨辉三角" 水题 阅读全文
posted @ 2018-11-06 23:02 ACBingo 阅读(207) 评论(0) 推荐(0) 编辑
摘要: "117. 填充同一层的兄弟节点 II" 与 "116. 填充同一层的兄弟节点" 完全一样,二叉树的层次遍历。。这是这次不是完美二叉树了 阅读全文
posted @ 2018-11-06 22:49 ACBingo 阅读(267) 评论(0) 推荐(0) 编辑
摘要: "116. 填充同一层的兄弟节点" 其实就是个二叉树的层次遍历 阅读全文
posted @ 2018-11-06 22:45 ACBingo 阅读(198) 评论(0) 推荐(0) 编辑
摘要: "114. 二叉树展开为链表" 这个题描述不清啊 一开始看描述每太明白题意,对着给出的样例做的 实际上就是: 1. 将右子树接到左子树的最右边的叶子节点上 2. 将左子树接到root的右儿子上 3. 把root的左儿子置空 阅读全文
posted @ 2018-11-06 21:44 ACBingo 阅读(384) 评论(0) 推荐(0) 编辑
摘要: "113. 路径总和 II" 这题跟上个题的区别 "112. 路径总和" ,需要保存下路径,且有可能出现多条路径。 在前一个题的基础上加上回溯即可 阅读全文
posted @ 2018-11-06 21:27 ACBingo 阅读(226) 评论(0) 推荐(0) 编辑
摘要: "112. 路径总和" 前序遍历累加路径和即可,注意两点: 1. 要在叶子节点判断是否等于目标和,非叶子节点达到了不行 2. 可能出现空树,这时即使sum为0也为false(都不存在路径谈何路径和) 阅读全文
posted @ 2018-11-06 21:11 ACBingo 阅读(365) 评论(0) 推荐(0) 编辑
摘要: "110. 平衡二叉树" 实际上递归的求每一个左右子树的最大深度即可,如果差值大于1,返回一个 1的状态上去 class Solution { public boolean isBalanced(TreeNode root) { return depth(root)!= 1; } public in 阅读全文
posted @ 2018-11-06 21:00 ACBingo 阅读(99) 评论(0) 推荐(0) 编辑
摘要: "109. 有序链表转换二叉搜索树" 这个题和上个题 "108. 将有序数组转换为二叉搜索树" 唯一的区别就是数字变成了链表,所以一个比较直观的做法就是先遍历一遍链表。。。。233 阅读全文
posted @ 2018-11-06 20:45 ACBingo 阅读(156) 评论(0) 推荐(0) 编辑
摘要: "108. 将有序数组转换为二叉搜索树" 由于数组是有序的,而我们只需要给出一种符合平衡要求的bst即可。所以直接拿数组中间值做根节点,左右分别为左右子树,递归处理即可 阅读全文
posted @ 2018-11-06 20:39 ACBingo 阅读(155) 评论(0) 推荐(0) 编辑
摘要: "107. 二叉树的层次遍历 II" 相当于把 "102. 二叉树的层次遍历" 的输出结果反转了一下 阅读全文
posted @ 2018-11-06 20:18 ACBingo 阅读(201) 评论(0) 推荐(0) 编辑
摘要: "106. 从中序与后序遍历序列构造二叉树" 后序遍历的第一个元素肯定是根节点,在中序遍历中找到该元素,左半是该节点的左子树的元素,右半是该节点的右子树元素,记左半的长度为L,后序遍历中,前L个元素为左子树的元素,除去最后一个元素外的后半部分则为右子树的元素。递归处理即可。 阅读全文
posted @ 2018-11-06 20:14 ACBingo 阅读(234) 评论(0) 推荐(0) 编辑
摘要: "105. 从前序与中序遍历序列构造二叉树" 前序遍历的第一个元素肯定是根节点,在中序遍历中找到该元素,左半是该节点的左子树的元素,右半是该节点的右子树元素,记左半的长度为l,前序遍历中去掉第一个元素后,前l个元素为左子树的元素,后半部分则为右子树的元素。递归处理即可。 阅读全文
posted @ 2018-11-06 20:03 ACBingo 阅读(178) 评论(0) 推荐(0) 编辑
摘要: "111. 二叉树的最小深度" 与获取最大深度不同的是,要注意判断下是不是叶子节点, 阅读全文
posted @ 2018-11-06 19:28 ACBingo 阅读(87) 评论(0) 推荐(0) 编辑
摘要: "104. 二叉树的最大深度" 没什么好办法,深搜或者宽搜暴力遍历吧 阅读全文
posted @ 2018-11-06 19:20 ACBingo 阅读(84) 评论(0) 推荐(0) 编辑
摘要: "103. 二叉树的锯齿形层次遍历" 按题号刷的优势体现出来了2333333 这题实际上就是上个题 "102. 二叉树的层次遍历" 的演变,把上个题结果的偶数行list反转一下即可。。 上题通过人数10k+,这个题才3k,我想这题不经过上题思路的引导很容易思路被带弯把 阅读全文
posted @ 2018-11-06 19:14 ACBingo 阅读(202) 评论(0) 推荐(0) 编辑
摘要: "102. 二叉树的层次遍历" 二叉树的层次遍历很简单,用队列实现bfs即可。 这里难点是要区分出每一层的楼层,分别放到对应的数组里 实际上在bfs的时候判断好在什么时候就进入了下一层即可。 设置一个标记位,用来标记当前元素是本层的最后一个元素。显然,第一层的root只有一个元素,为第一个标记。 仔 阅读全文
posted @ 2018-11-06 18:59 ACBingo 阅读(199) 评论(0) 推荐(0) 编辑
摘要: "101. 对称二叉树" 一开始想复杂了呀,没有做出来 直观的思路就是反转这颗树,然后判断两颗树是不是相同的 网上大部分人的思路更为简洁,一开始没有想到。 即,判断左子树和右子树是否对称: 1. 当前左右值是否相同 2. 当前左子树的左子树和右子树的右子树是否相同 3. 当前左子树的右子树和右子树的 阅读全文
posted @ 2018-11-06 17:06 ACBingo 阅读(148) 评论(0) 推荐(0) 编辑