剑指Offer之 - 树的子结构
来源:互联网 发布:ios国外福利软件 编辑:程序博客网 时间:2024/04/28 13:27
题目:
输入两棵二叉树A和B,判断B是不是A的子结构。
思路:
先在A中找到一个结点的值和B的根结点值相同的结点,然后再判断以这个结点为根结点的数和树B是否相等(不是相等,而是B是否是A的子树)。
代码:
#include <iostream>using namespace std;struct BinaryTreeNode{int m_nValue;BinaryTreeNode *m_pLeft;BinaryTreeNode *m_pRight;BinaryTreeNode(){}BinaryTreeNode(int x):m_nValue(x),m_pLeft(NULL),m_pRight(NULL){}};//功能:判断数B是否是树A的子树//方法:先在A中找到一个结点的值和B的根结点值相同的结点,然后再判断以这个结点为根结点的数和树B是否相等(不是相等,而是B是否是A的子树)。bool DoesTree1HaveTree2(BinaryTreeNode *pRoot1 , BinaryTreeNode *pRoot2);bool HasSubtree(BinaryTreeNode *pRoot1 , BinaryTreeNode *pRoot2){if(pRoot1 == NULL || pRoot2 == NULL)return false;bool result = false;if(pRoot1->m_nValue == pRoot2->m_nValue)result = DoesTree1HaveTree2(pRoot1 , pRoot2);if(!result)result = HasSubtree(pRoot1->m_pLeft , pRoot2);if(!result)result = HasSubtree(pRoot1->m_pRight , pRoot2);return result;}bool DoesTree1HaveTree2(BinaryTreeNode *pRoot1 , BinaryTreeNode *pRoot2){//如果pRoot2到达叶结点,说明遍历完毕,说明它是A的子树,返回trueif(pRoot2 == NULL)return true;if(pRoot1 == NULL)return false;//bool result = false;if(pRoot1->m_nValue == pRoot2->m_nValue)return DoesTree1HaveTree2(pRoot1->m_pLeft , pRoot2->m_pLeft) && DoesTree1HaveTree2(pRoot1->m_pRight , pRoot2->m_pRight);elsereturn false;}int main(){BinaryTreeNode *node1 = new BinaryTreeNode(1);BinaryTreeNode *node2 = new BinaryTreeNode(2);BinaryTreeNode *node3 = new BinaryTreeNode(3);BinaryTreeNode *node4 = new BinaryTreeNode(4);node1->m_pLeft = node2;node1->m_pRight = node3;node3->m_pRight = node4;cout<<HasSubtree(node1 , node3)<<endl;return 0;}
0 0
- 剑指Offer之 - 树的子结构
- 剑指offer之树的子结构
- 【剑指offer】之树的子结构
- 剑指offer之树的子结构
- 剑指offer 之 树的子结构
- 剑指Offer算法实现之十八:树的子结构
- 剑指offer系列之十六:树的子结构
- 码农小汪-剑指Offer之15-树的子结构
- 剑指offer系列之16:树的子结构
- 剑指offer之面试题18:树的子结构
- 剑指offer之面试题18树的子结构
- 剑指offer(四十六)之树的子结构
- [剑指offer学习心得]之:树的子结构
- 树的子结构[剑指offer]之python实现
- 剑指Offer之面试题18:树的子结构
- 剑指offer之树的子结构(Python)
- 剑指offer:判断树的子结构
- 【剑指offer】树的子结构
- RMAN备份报错
- 2015-05-05 解决Websphere6.1版本过期问题
- Office 2016公开预览版正式发布啦
- 面试
- 网络的设置
- 剑指Offer之 - 树的子结构
- 可怕的阶乘
- java 泛型的浅显认识
- Sqlserver常用函数例子说明
- 音乐播放器
- 点击A链接回到顶端
- activemq 5.11.1 win7(x64)环境配置
- unity 修改Mono反破解加密Assembly-CSharp.dll
- 工作感悟--技术