Loading

Leetcode-26-(头疼的递归)树的子结构

题目链接


题目描述

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)

B是A的子结构, 即 A中有出现和B相同的结构和节点值。

例如:
给定的树 A:
     3
    / \
   4   5
  / \
 1   2
给定的树 B:
   4 
  /
 1

思路

递归呗。。。
想半天不会写。
一看别人代码这么短。。。


代码

class Solution {
public:
    bool isSubStructure(TreeNode* A, TreeNode* B) {
        if (A == NULL || B == NULL) return false;
        return cmp(A, B) || isSubStructure(A->left, B) || isSubStructure(A->right, B);
    }
    bool cmp(TreeNode* A, TreeNode* B) {
        if (B == NULL) return true;
        if (A == NULL) return false;
        if (A->val==B->val && cmp(A->left, B->left) && cmp(A->right, B->right))
            return true;
        return false;
    }
};
posted @ 2022-03-17 16:14  ARUI丶  阅读(22)  评论(0编辑  收藏  举报