树的子结构
来源:互联网 发布:js字符串是一个数组 编辑:程序博客网 时间:2024/05/17 02:15
题目
输入两颗二叉树A和B,判断B是不是A的子结构.二叉树结点的定义如下:
先在A中找B的跟节点,若找到相同的,在判断左右子树是否相同.
struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight; BinaryTreeNode(int n) : m_nValue(n), m_pLeft(NULL), m_pRight(NULL) {};};
bool HasSubtree(BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2);bool DoesTree1HaveTree2(BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2);bool HasSubtree(BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2){ bool result = false; if (pRoot1 != NULL && pRoot2 != NULL) { 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){ if (pRoot2 == NULL) return true; if (pRoot1 == NULL) return false; if (pRoot1->m_nValue != pRoot2->m_nValue) return false; return DoesTree1HaveTree2(pRoot1->m_pLeft, pRoot2->m_pLeft) && DoesTree1HaveTree2(pRoot1->m_pRight, pRoot2->m_pRight);}
0 0
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- java date20150818
- windows配置thrift开发环境
- 轻松项目管理03-项目计划
- java date20150818(下午)
- java(8-18)
- 树的子结构
- R软件绘制中国省际区域图--傻瓜教程
- 1260 Tickets【dp】
- PHP面试总结
- [译]Android DataBinding:再见Presenter,你好ViewModel!
- Thrift学习笔记—IDL基本类型
- 【socket】如何用c语言访问网站
- RT-Thread finsh源码分析: finsh_token.c
- android知识点随笔