树的子结构

66 阅读1分钟

树的子结构

题目描述:

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。

示例:

输入: A = [1,2,3], B = [3,1]
输出: false

思路:

递归比较 如果a和b的元素相同,再分别比较a和b的左右节点,依次类推。 需要注意的是 如果a为空b不为空 a不为空b为空这两个边界

代码:

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} A
 * @param {TreeNode} B
 * @return {boolean}
 */
const isContain=(A,B)=>{
    if(!A&&B){
        return false
    }
    if(!B){
        return true
    }
    if(A.val===B.val){
        return isContain(A.left,B.left)&&isContain(A.right,B.right)
    }else{
        return false;
    }
}
var isSubStructure = function(A, B) {
   if(!A||!B){
       return false
   }else{
       if(A.val===B.val&&isContain(A,B)){
           return true
       }else{
           return isSubStructure(A.left,B)||isSubStructure(A.right,B)
       }
   }
};

更完这篇就去修改项目里的文案国际化了 得亏是周五啊 周五才可以做这么乏味的事情也这么开心 哈哈哈

题目链接:

leetcode.cn/problems/sh…