详细题目请登入网址:572. 另一棵树的子树 - 力扣(LeetCode)
下面是针对本题做的一些分析
看到数值相等,会不会想起之前写道的单值二叉树呢?哎,对喽,要调用到它,用来判断数值勒
我写判断结构部分代码就行喽!
那怎么写呢?
我讲一下思路吧!弄两个指针分别指向树A,树B,一开始指向树的根节点,如果根节点的值不相同,开始递归呗,递归根节点左子树,根据上头给出的示例1,树A的左子树节点是4,和树B的节点数值上是相同,接着递归4的左子树,都是1,是相同的,接着递归1的左子树,都是NULL,然后回溯到4返回true,再递归4的右子树,是2,递归子树B节点4的右子树,是2,哎是相同的,节点2继续递归呗,递归后是NULL,是相同的,那带着好消息回溯呗,回溯到4.
从根节点开始,向右重复以上递归的转化成代码如下
结构上怎么写函数呢?其实也用到递归,写一个函数是通过递归判断树结构
什么意思呢?
之前我埋了伏笔,记得这句话吗?开始指向树的根节点,如果根节点的值不相同,开始递归呗
根值不相同,继续递归,目的是什么呢?可以想一想啊!这里留给大家三分钟思考时间
好,我公布答案啦,根值不同,继续递归,
是找值相同的节点,然后返回true
如果在左孩子找到了,直接用它,如果有孩子找到,直接用它
然后我们要多思考些
空树呢?一个树非空,一个树是空,空树肯定不是非空树的子树
完整代码如下
接下来整函数递归图