美文网首页
树的子结构

树的子结构

作者: UAV | 来源:发表于2020-06-24 18:29 被阅读0次

    题目描述

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

    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };*/
    
    class Solution {
    public:
        bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
        {
            bool result = false;
            //1.判断根结点是否相,
            if (pRoot1 != NULL&& pRoot2 != NULL) {
                if (pRoot1->val == pRoot2->val) {
                    result = hasSubTree2(pRoot1, pRoot2);
                }//如果A树左子树为true,则程序结束。
                if (!result) {
                    result = HasSubtree(pRoot1->left, pRoot2);
                }
                if (!result) {
                    result = HasSubtree(pRoot1->right, pRoot2);
    
                }
            }
    
            return result;
        }
        //2.如果相等开始判断子树
        bool hasSubTree2(TreeNode* pRoot1, TreeNode* pRoot2) {
            if (pRoot2 == NULL) {
                return true;
            }if (pRoot1 == NULL) {
                return false;
            }
            if (pRoot1->val != pRoot2->val) {
                return false;
            }
            return hasSubTree2(pRoot1->left, pRoot2->left) && hasSubTree2(pRoot1->right, pRoot2->right);
        }
    };
    
    

    相关文章

      网友评论

          本文标题:树的子结构

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