LintCode
树下柚子
今天也要好好学习呢。
展开
-
(97)LintCode 之“二叉树的最大深度”递归实现
题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。这道题算是递归里比较基础的一道题了。用递归的思想思考,相信你的方法能解决问题,你会发现,它真的就解决了呢。思路:二叉树的最大深度=max(左子树的最大深度,右子树的最大深度)+1代码如下:#include<algorithm> class Solution { public: /** ...原创 2018-05-11 16:37:37 · 165 阅读 · 0 评论 -
(177)LintCode 之把排序数组转换为高度最小的二叉搜索树
题目描述:给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。对于一个排序好后的数组,转换成高度最小的检索树,其基本思路是:将中间值A[mid]作为树根,比中间值小的放在左子树,比中间值大的放在右子树。这是一个典型的递归操作。考虑到Lintcode中给出的函数只给了一个参数,我们需要构造新的vector来分别存放A[mid]左边的值和A[mid]右边的值。代码如下:class Solu...原创 2018-05-11 20:56:20 · 191 阅读 · 0 评论 -
(245)LintCode 之判定 T2 是否为 T1的子树
题目:有两个不同大小的二叉树:T1有上百万的节点;T2有好几百的节点。请设计一种算法,判定T2是否为T1的子树。原创 2018-05-12 14:59:35 · 394 阅读 · 0 评论 -
(66,67 , 68)LintCode 之 二叉树遍历递归实现
在这几道二叉树遍历的题目中,应注意的是:对于有返回值的调用函数来说,存储返回值的vector变量不能在每次函数调用时都被重新初始化。所以我在这里定义了一个位于函数外的成员变量用来存储返回值。66.题目描述:给出一棵二叉树,返回其节点值的前序遍历。二叉树的前序遍历:根节点——>左子树——>右子树,使用递归实现,先处理中间结点,然后左子树,右子树。C++代码如下:class Solutio...原创 2018-05-08 13:38:16 · 136 阅读 · 0 评论 -
(93)LintCode 之“确定二叉树是否高度平衡”的递归实现
题目描述:给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。思路:考虑一棵二叉树是否平衡,首先要比较根节点的左右子树的高度差是否小于等于1。伪代码如下所示:if(root==NULL) 此树平衡,返回true;if(左右子树高度差>1) ——分支1 此树不平衡,...原创 2018-05-08 17:37:14 · 241 阅读 · 0 评论 -
LintCode 之A+B问题(1)
题目描述:给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。本题明确要求不让用加法运算符,但提示使用位运算。从位运算入手。 考虑一个简单的加法5+9=14,转换成二进制运算是:0101+1001=1110 ① 如果不考虑进位的话就简单了,用“按位异或”运算符“^”可以实现:0101^1001=1100 ② ②式和①式相比较,少算了第1位的进位(0010),即 2^1我们可以用...原创 2018-05-08 00:32:01 · 209 阅读 · 0 评论