树的子结构
2016-05-24 11:29
260 查看
树的子结构
bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
{
//if(pRoot1==NULL&&pRoot2==NULL)
//return true;
if(pRoot1==NULL||pRoot2==NULL)//只要一个为空就false,理解为Tree1如果左孩子不包含该子树,应该退出判断右孩子,所以不可以返回true
return false;
bool result = false;
if(pRoot1->val==pRoot2->val)
result = DoseTree1HasTree2(pRoot1,pRoot2);
if(!result)
result = HasSubtree(pRoot1->left,pRoot2);
if(!result)
result = HasSubtree(pRoot1->right,pRoot2);
return result;
}
bool DoseTree1HasTree2(TreeNode* pRoot1,TreeNode* pRoot2)
{
//if(pRoot1==NULL&&pRoot2==NULL) // 该条件去掉注释也是正确的
//return true;
if(pRoot2 == NULL)
return true;
if(pRoot1 == NULL) //相当于if(pRoot2!=NULL&&pRoot1==NULL)
return false;
if(pRoot1->val!=pRoot2->val)
return false;
return (DoseTree1HasTree2(pRoot1->left,pRoot2->left))&&
(DoseTree1HasTree2(pRoot1->right,pRoot2->right));
}
bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
{
//if(pRoot1==NULL&&pRoot2==NULL)
//return true;
if(pRoot1==NULL||pRoot2==NULL)//只要一个为空就false,理解为Tree1如果左孩子不包含该子树,应该退出判断右孩子,所以不可以返回true
return false;
bool result = false;
if(pRoot1->val==pRoot2->val)
result = DoseTree1HasTree2(pRoot1,pRoot2);
if(!result)
result = HasSubtree(pRoot1->left,pRoot2);
if(!result)
result = HasSubtree(pRoot1->right,pRoot2);
return result;
}
bool DoseTree1HasTree2(TreeNode* pRoot1,TreeNode* pRoot2)
{
//if(pRoot1==NULL&&pRoot2==NULL) // 该条件去掉注释也是正确的
//return true;
if(pRoot2 == NULL)
return true;
if(pRoot1 == NULL) //相当于if(pRoot2!=NULL&&pRoot1==NULL)
return false;
if(pRoot1->val!=pRoot2->val)
return false;
return (DoseTree1HasTree2(pRoot1->left,pRoot2->left))&&
(DoseTree1HasTree2(pRoot1->right,pRoot2->right));
}
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- C语言二叉树的非递归遍历实例分析
- 使用C语言构建基本的二叉树数据结构
- 一波二叉树遍历问题的C++解答实例分享
- 举例讲解C语言程序中对二叉树数据结构的各种遍历方式
- C++非递归队列实现二叉树的广度优先遍历
- PHP实现的线索二叉树及二叉树遍历方法详解
- C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
- C#常见算法面试题小结
- php 面试碰到过的问题 在此做下记录
- asp.net 面试+笔试题目第1/2页
- C#非递归先序遍历二叉树实例
- C++将二叉树转为双向链表及判断两个链表是否相交
- C++非递归建立二叉树实例
- C语言实现找出二叉树中某个值的所有路径的方法
- C++实现二叉树遍历序列的求解方法
- C语言实现二叉树遍历的迭代算法