本文主要是介绍剑指Offer——树的子结构(JS实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
解题思路
- 本题采用两个递归互相调用的方式进行求解
- 一个树是否是另一个树的子结构,有3种情况
- 情况一:子树和当前节点完全一致
- 情况二:子树在左子树中
- 情况三:子树在右子树中
- 第一个递归用于控制发生的是哪一种情况
- 第二个递归则用于进行遍历,如果A树为空,说明A数遍历完了都没有匹配到,说明B树不是子树,如果B树为空,说明B树遍历完了,说明B树是子树,如果A和B的值不相同,则返回false,此时也许会有疑问,那万一子结构在树的深部岂不是直接返回false了?这是第一个递归就开始发挥作用了。
- 本题的难点在于:如果只有一个递归,当A和B的值不同时,若直接返回false,显然不合理,但是如果不返回false,后续很难进行
解题代码
var isSubStructure = function(
这篇关于剑指Offer——树的子结构(JS实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!