2020年7月7日打卡

有点头晕,整天犯困,该锻炼了

Leetcode 112. 路径总和

题目

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。

说明: 叶子节点是指没有子节点的节点。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/path-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解及思路

首先想到两种方法:其一是将父节点的值加到子节点上,不断更新每棵子树子节点的值,即有如下公式:
root->left->val = root->val + root->left->val
root->right->val = root->val + root->right->val
当当前节点为叶子节点时检查该叶子节点的值是否等于给定值。
该方法的代码部分感觉比较麻烦故没有写,代码大概是初始创建两个队列,一个保存叶子节点,一个保存当前节点,最初将根节点放入当前节点队列,遍历该队列并对队列中节点的左右子节点加上该节点的值,循环这个操作直至当前节点没有子节点,然后将该节点存入叶子节点队列,最后对叶子节点队列遍历判断是否存在给定值。(这是最初的想法,可以不用那个叶子节点队列的,用是为了方便我思考)
后一种方法就是常见的递归,说到树就会想到递归,正好题目中的函数传入了两个值,也方便了直接写递归函数。大体思路就是遍历树,在遍历树的同时对给定值减掉当前节点的值,当遍历到叶子节点时一旦给定值减到0了,就找到了指定的路径,代码如下:

	bool hasPathSum(TreeNode* root, int sum) {
        if(!root){
            return false;
        }
        int judge = false;
        if(root->left){
            judge |= hasPathSum(root->left, sum - root->val);
        }
        if(root->right){
            judge |= hasPathSum(root->right, sum - root->val);
        }
        if(!root->left && !root->right){
            if(root->val != sum){
                return false;
            }else{
                return true;
            }
        }
        return judge;
    }

渐入气氛的克苏鲁

今天没少看,《胡安 罗梅罗的转变》、《白船》、《街道》、《降临于萨尔纳斯的厄运》、《伦道夫 卡特的供述》。

《胡安 罗梅罗的转变》

嗯。。感觉有点意义不明的一篇,没太看懂,据说洛夫克拉夫特本人也不承认有这么一篇。故事是从一个来美国淘金的人开始,这个人并没有讲述他的前半生,只是说去过印度并且带回来一枚戒指,淘金期间有不少墨西哥人也加入了,“无知又愚昧、邋里邋遢”大概就是这种印象的棕色皮肤墨西哥人,胡安 罗梅罗也是其中一员,他是个孤儿似乎信仰着阿兹特克的某个神明,而且他明确流露出对主人公戒指的好奇、并非出于金钱方面。某天炸矿结果炸出个地下溶洞?类似于地下溶洞的洞穴吧,结果晚上就开始有莫名其妙的声音、来自地底,这声音对胡安 罗梅罗产生了极大的影响,他以一种极其激动或是说兴奋的态度在倾听、自言自语,主人公也被吸引,俩人就这么在别人不知道的情况下下洞了,这戒指也是奇了怪了,自己发光指向洞穴的深处,胡安 罗梅罗就进入了洞穴深处被岩浆融化了?还是被类似太阳的东西烧死了?总之是死了,烧死的,给主人公吓过去了。结果主人公醒了发现他俩根本没出门,但是胡安 罗梅罗的确是死了,他的戒指也没了,洞穴也被昨晚的一块大落石填上了,不过主人公听到了那晚胡安 罗梅罗喊的一个名字“维奇洛波奇特利!”。说实在的我看完还是一头雾水,也没有出现什么高层次生命或者预兆或者联系之类的,完全没有理解洛夫克拉夫特到底在讲什么,不过我倒是查了一下“维奇洛波奇特利”,阿兹特克人的至高神,阿兹特克人的神明由来很有意思,都是通过征服其他部落、再把该部落的神明融入到自己的神话中,但“维奇洛波奇特利”、或者说阿兹特克神话中的战神、太阳神、太阳与火之主、南方的统治者,是阿兹特克人自己的神明,是阿兹特克的至高神,不过还是没弄懂和一个印度的戒指有什么关系。

《白船》

与其说这是一篇小说,不如说是一个梦境。就像黄粱一梦一样,故事的主人公乘坐白船游历了各个岛屿,人本拥有却遗忘的的美好梦境与想象所成之岛——扎尔;人们所窥视的全部奥秘之岛——撒拉伦;欢愉不曾光临之地——夏阿;幻想之地、超越时空、生死之地——索那 尼尔;诸神之岛——克修利亚。在索那 尼尔居住了好像永恒那么久之后,主人公忍不住好奇还是选择前往克修利亚,可那里是众神的居所,凡人怎能踏足!终究,白船掉出了世界,掉入了终焉的虚空中,而主人公醒来发现自己还在灯塔下——只不过从他爷爷以来没有熄灭过的灯塔第一次熄灭了。梦境总是美的难以言喻,不过很少有人能描绘出来,大多对梦境的描绘都只是只言片语、零散的连不起来,只有少数有强烈语言天赋或者被选中的人才能详细的描述梦境吧,《白船》真的就像在描述梦境一样。

《街道》

糟糕的作品,强烈的种族主义文章,充斥着对印第安人和黑人的歧视,没什么可说的,街道之所以成为废墟,还不是因为那些所谓“恪守着古老文明传统的人”。

《降临于萨尔纳斯的厄运》

很克苏鲁风的一篇,描述和气氛渲染很到位,除了我没看懂为啥萨尔纳斯王变成蜥蜴,所以这是个每隔千年醒一次、敢侮辱自己就把对面变成蜥蜴人的旧日支配者?精彩倒是很精彩,恐怖是真的没感觉恐怖,如果厄运仅仅是把对面变成蜥蜴人,还不如写伯克鲁格在梦境把他们逼疯了吓人,真的是洛夫克拉夫特笔下相当温和的旧日支配者了,人不犯我我不犯人,根本没有主动的恶意。

《伦道夫 卡特的供述》

哦吼吼,卡特出场了!这篇写的相当不错,因为内(wo)容(xian)很(tai)棒(lei)我就不剧透故事了,总之是非常不错的克苏鲁风了,看的时候会不自觉代入角色产生一种紧张感,尤其是最后那一部分,虽然是第n次看还能让我感到有点毛骨悚然。
其实还看了《可怕的老人》和《树》,太困了就留到明天写。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值