摘要: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6, 阅读全文
posted @ 2018-09-19 17:31 yuyin 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 保证原始二叉搜索树中不存在新值。 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。 例如, 你可以返回这个二叉搜索树: 或者这个树也是有效的: 阅读全文
posted @ 2018-09-19 16:56 yuyin 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。 例如, 你应该返回如下子树: 在上述示例中,如果要找的值是 ,但因为没有节点值为 ,我们应该返回 。 思路: 采用递归的方法 根节点为空时,返回No 阅读全文
posted @ 2018-09-19 16:31 yuyin 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表: , 一个可能的答案是: , 它可以表示下面这个高度平衡二叉搜索树: 思路: 将有序链表的数值读出,存入到列表 阅读全文
posted @ 2018-09-19 15:55 yuyin 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: `[ 10, 3,0,5,9], 一个可能的答案是: ,它可以表示下面这个高度平衡二叉搜索树: 思路: 采用递归的方法, 阅读全文
posted @ 2018-09-19 15:32 yuyin 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 示例 2: 注意: 您可以假设树(即给定的根节点)不为 NULL。 思路: 利用辅助队列, 每次pop一个节点时,检查左右子树是否为空,如果不为空,按照push右子树,再push左子树的顺序将子节点压入栈中 当队列最后为空时,最后一次pop 阅读全文
posted @ 2018-09-19 12:40 yuyin 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 示例 1: 注意: 合并必须从两个树的根节点开始。 思 阅读全文
posted @ 2018-09-19 11:41 yuyin 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 示例 2: 解释: 从左向右读, 为 121 。 从右向左读, 为 121 。因此它不是一个回文数。 示例 3: 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字 阅读全文
posted @ 2018-09-19 10:09 yuyin 阅读(67) 评论(0) 推荐(0) 编辑