树的子结构

来源:互联网 发布:林清轩芦荟胶 知乎 编辑:程序博客网 时间:2024/04/28 00:25

题目描述

输入两颗二叉树A,B,判断B是不是A的子结构。

子结构:树B是A中的一部分

算法:
第1步、A中某节点值与B根节点值相同进去2步,不相同继续先根遍历树A,继续和B的根节点比较。
第2步、先根遍历检验所有结点是否相同,结束条件为B树全部访问。

class Solution {public:    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)    {        bool result = false;        if(pRoot1 != NULL && pRoot2!=NULL){            if(pRoot1->val == pRoot2->val)                result = SubTreeAllSame(pRoot1,pRoot2);            if(!result)                result = SubTreeAllSame(pRoot1->left,pRoot2);            if(!result)                result = SubTreeAllSame(pRoot1->right,pRoot2);        }        return result;    }    bool SubTreeAllSame(TreeNode* pRoot1,TreeNode* pRoot2){        bool result = false;        if(pRoot2 == NULL)            return true;        if(pRoot1 == NULL)            return false;        if(pRoot1->val == pRoot2->val)            return SubTreeAllSame(pRoot1->left,pRoot2->left) && SubTreeAllSame(pRoot1->right,pRoot2->right);        else            return false;    }};
0 0
原创粉丝点击