美文网首页
[二叉树] 树的子结构

[二叉树] 树的子结构

作者: FlyingReganMian | 来源:发表于2018-06-10 15:31 被阅读0次

题目描述

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

解题思路:
前序遍历A树,寻找A树中和B树根节点相同的节点。
A. 若A树的节点和B树的根节点相同,则A,B两树同时以当前节点开始前序遍历,比较A,B树中节点是否相同,若不相同则退出当前的遍历,并返回当前结果。
B. 若A树的节点和B树的根节点不相同,或A中返回结果为false,继续遍历A树,查看是否还存在与B树根节点相同的节点

struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
class Solution {
public:
    bool isSameTree(TreeNode* x, TreeNode* y)
    {
        bool res = false;
        if(y == NULL) return true;//y=NULL,证明B树中所有节点已经比较完了,并且均与A树节点相同
        if(x == NULL) return false;//B树节点还没有比较完,A树节点已经比较完了。
        
        if(x->val == y->val)
        {
            res = isSameTree(x->left,y->left);
            if(res)
            {
                res = isSameTree(x->right,y->right);
            }
        }
        return res;
    }
    bool HasSubtree(TreeNode*x, TreeNode* y)
    {
        bool res = false;
        if(x==NULL || y==NULL)
            return false;
        if(x->val == y->val)//在A树中找到与B树根节点相同的节点
        {
            res = isSameTree(x,y);
        }
        if(!res)//没有找到相同的节点或B树此时不是A树种以当前节点为根节点树的子树
            res = HasSubtree(x->left,y);
        if(!res)
            res = HasSubtree(x->right,y);
        
        return res;
    }
};

相关文章

  • 《剑指offer》(十七)-树的子结构(java)

    树的子结构 考点:二叉树 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个...

  • 二叉树

    二叉树 二叉搜索树与双向链表 「栈实现中序遍历」 树的子结构 判断B是不是A的子结构 二叉树的最近公共祖先 后序遍...

  • 26:树的子结构

    题目26:树的子结构 输入两棵二叉树A 和B,判断B 是不是A 的子结构。 举例说明 思路 和二叉树有关的问题,很...

  • 18 树的子结构

    树的子结构 题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)...

  • 《剑指offer》— JavaScript(17)树的子结构

    树的子结构 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) ...

  • 剑指Offer - 17 - 树的子结构

    题目描述 树的子结构 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) ...

  • JZ-017-树的子结构

    树的子结构 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)题...

  • 26-树的子结构

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

  • 面试题26. 树的子结构

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

  • 面试题26. 树的子结构

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

网友评论

      本文标题:[二叉树] 树的子结构

      本文链接:https://www.haomeiwen.com/subject/yfnfeftx.html