粉丝127获赞675

计算思维是什么?是编程思维吗?是数学思维吗?还是逻辑思维呢?一句话总结,计算思维是数学思维、逻辑思维、编程思维、抽象思维。看更多思维的总和。 再句,像一些计算思维活动,有四种,问题分解、模式抽象、算法设计和模式识别。再具体一些, 这是一个扁平化的房子。问题分解可以这样理解,画这所房子可以拆解为分别画烟囱、屋顶、焊主体。将画房子这件事拆分为三步, 复杂问题拆解为简单问题,就是问题分解,模式识别怎么理解?还是画房子 可以画简单房子,可以画国风房子,可以画黑白线条房子,可以画彩色城堡房子,但归根到底都是在完成画房子这件事。这就是模式识别。抽象思维怎么理解 刚刚画的这些房子?抓取房子的核心特征,可以抽象为只有一个主体,门窗、 屋顶很烟囱的房子。继续抽象,可以抽象为最初扁平化的房子图形,但我们都可以很容易地知道,这个图形就是房子,这就是抽象思维。最后一个算法设计 还是画房子?一所房子由哪些部分组成呢?首先有一个主体,其次有一个屋顶,可能还需要一 个烟囱。最后画出一个简单,但可以一眼看出是房子的小化。这一系列分析看完成任务的步骤就是算法设计。 计算思维是解决各类问题的必备思维,适用于中小学生各个学习科目。焊阶段持续关注 steam 八六,了解更多计算思维知识。


hello, 大家好,我是 jack。 在 这一讲当中,我们一起来看力扣的五百七十二题,另一棵树的指数,给你两棵二叉树, root 跟 subroot, 检验 root 中是否包含和 subroot 具有相同结构的节点值的指数,如果存在返回处,否则返回 false 二叉数。翠的一颗指数包括翠的某个节点和这个节点的所有后代节点。翠也可以看作它自身的一颗指数。 大家看一下,这里就表示存在四幺二,四幺二这个结,结构是相同的,那这边就表示不存在,为什么它的所有结构是四幺二零,而这边是四幺二? 其实我们刚好可以用到第一百题的 is same tree, 这个函数可以直接使用的。当然我再带大家写一遍啊, is same tree 用来判断是否是相同的一棵树,它需要一个 p, 需要一个 q, 是 不是给我返回一个 root for 类型的结果呀?然后我,我这么判断, if p is non, q is non, 返回出,那 if p is non 或者 q is non 返回 force, 然后判断 p 不 等于 q 返回 force, 否则的话,地归对吧?否则就地归嘛, 地规调用判,又地规调用。判断左右指数并返回结果并返回结果, 直接 return sell 呃, sell 点 is same tree, 判断 p 的 left 跟 q 的 left, 老判断 p 的 right 跟 q 的 right。 搞定,我们会用到这个函数,所以这个函数是之前讲过的,直接用老。如果你进到我这个函数 is subtree 的 时候,我可以先判断一下你们俩, 我在这里先判断一下,如果 root is null, 那 就直接再判断呃, subroot 是 不是也是 null, 如果你俩都是 null, 那 结果就是错,是吧?否则呢?你要判断 这里我们要判断以 root 为根的二叉数, 二叉数是否 二叉数中的指数吧。二叉数,以 root 为根的二叉数。呃,是否与 subroot 是 吧相同?那你先判断一下它俩是否相同,是不是调这个函数就可以判断了。 如果它俩相同啊,如果 c f 点 is same tree, 然后一个是 root, 一个是 subroot, 如果它俩相同,大家想我是不是直接就可以返回结果了?对的,那如果不相同呢?否则怎么办?否则, 否则,哎,否则就需要到 root 的 左右指数中判断是吧?要去它的左右指数中判断, 也就意味着 is same tree。 注意,去我左边看看有没有。同时要去我右边看看有没有, 去我右边看看有没有。哎,不是同时,或者啊,或者去我左边看有没有,或者你去我右边看有没有。只要其中有一个确保了是绝对相同的,那就可以得到出的结果,直接返回就可以了。好,我们先看一下这两个结果,一个是出,一个是 force。 没错,一个是出,一个是 force。 那 接下来呢,我们将这个 solution 提交一下, ctrl c, ctrl v, 点击提交。

哈喽,大家好,我是 jack。 在 这一讲当中,我们一起来看力扣的一千三百六十七题,二叉数中的链表。给你一颗以 root 为根的二叉数和一个以 had 为第一个节点的链表。 如果在二叉数中存在一条一直向下的路径,且每个点的数值恰好一对应 had 为首链表中的每个节点的值,那么请你返回处,否则返回 false。 一直向下的路径的意思是从数的某个节点开始,一直连续向下的路径来。举个例子,如果 had 它是空的话,那也肯定是真,因为 had 没有结果,那就算数是空的,那也是真的。但是呢,但是我 root 如果是空呢? 如果 had 不 为空,我 root 是 空,那就说明什么?那肯定是假呀,是不是? 然后你得继续找,你去找,找到一颗,嗯,或者说我们再做一个判断啊,我们这样子判断,如果 had 的 value, 它等等于 root 的 value, 说明两个节点的头节点是不一样的啦。 如果是一样的话,你是不是应该继续变列二叉数把?呃,左右去继续去变列二叉数,看它的左右节点是否都一样,对不对啊?所以,其实本质上呢,这里就得变列二叉数了。变列二叉数, ok, 那 同学们,我们肯定是要写一个 traverse 函数去变量二叉数的,只不过在这个地方呢,呃,我们要把 had 跟 route 再传进去,传到我的 二叉数便利框架当中去。 had 跟 route 给我传进来了,传到这里来,我们需要给它返回一个结果啊,返回找到没找到? ok, 那 这里其实我代码还没写完,但先不去管它了,我们在这个地方,其实好像也得判断一下, 也得去判断一下,因为它每次往下走的时候要去看一看,好走到这边呢,还得去判断 had 的 value 是 否等于 root 的 value, 如果它又等于,那你要继续, 又得继续了,那这个继续呢?同学们,你看啊,在这个地方还是要掉自己,但是我传进去的时候呢,应该传的是 had the next 跟 root 的 left 去左边看一看,或者 seven traverse 去右边看一看。 had next 跟 root 的 right 去右边看一看。返回,如果你 这里反,这里走完还是没,呃,没有返回的话啊,最终你往外走的话,那只能返回 force 了。 好在上一层我调用了穿沃斯,将这两个结果掉进去了。那你既然给我一个沃类型的返回结果,那如果你的返回是成立的,那这里就是真了。那如果他不成立呢?也就说上一层他俩不存在呢? 他俩不存在,那就否则就是。否则这种情况,我们需要去二叉树的左右子节点查看。需要去二叉树的左右子节点查看。 查看。好,同学们,注意,这个时候是调自己啊,它也是一个低规,所以其实这里面这是一层低规,这里又是一层低规,又是一层低规。 那在这一层低规当中,我们需要做的事情呢?是把 had 放到哪里去找呢?放到 root 的 left 里面去找,或者 把 had 放到 root 的 right 里面去找。这个结果也返回一个 root 类型的,我们最终是可以把这个结果直接 return 回去的, 搞定了。因此这里面是两层,两层嵌套,低轨嵌套,因此它的时间复杂度啊,是平方阶的。好,我们先看一下 我们最终的结果是否正确吧?点击右键执行一下处处 force, 这跟我们立刻平台的三道力,三道势力是一样的,处处处处 force 是 相同的。好了,那我们接下来把这段代码进行一个提交, ctrl c 复制一下,然后来到我们的立刻测试平台, 删掉粘贴,点击提交。