码迷,mamicode.com
首页 > 其他好文 > 详细

树的子结构

时间:2017-12-23 17:13:07      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:scribe   treenode   nbsp   val   避免   btree   tree   ==   public   

题目描述

  输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
  思路:两个递归函数,一个负责遍历树A;另一个负责判断由树A中某一个节点作为根节点的子树是否和树B结构一样
bool isSubTree(TreeNode *pRoot1, TreeNode *pRoot2)//判断是否为子树函数
{
    if(!pRoot2)return true;
    if(!pRoot1)return false;
    if(pRoot1->val != pRoot2->val)return false;
    return isSubTree(pRoot1->left, pRoot2->left) && isSubTree(pRoot1->right, pRoot2->right);
}
void DFS(TreeNode *pRoot1, TreeNode *pRoot2, bool &res)//遍历函数
{
    if(res==true)return;//如果res已经被置为true,提前终止,避免无谓的判断
    if(pRoot1->val == pRoot2->val)res=isSubTree(pRoot1->left, pRoot2->left) && isSubTree(pRoot1->right, pRoot2->right);
    if(pRoot1->left)DFS(pRoot1->left, pRoot2, res);
    if(pRoot1->right)DFS(pRoot1->right, pRoot2, res);
}
class Solution {
public:
    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
    {
        bool res=false;
        if(!pRoot1 || !pRoot2)return res;
        DFS(pRoot1, pRoot2, res);
        return res;
    }
};

 

树的子结构

标签:scribe   treenode   nbsp   val   避免   btree   tree   ==   public   

原文地址:http://www.cnblogs.com/jeysin/p/8093484.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!