二叉树的子结构
来源:互联网 发布:淘宝卖充值卡怎么弄 编辑:程序博客网 时间:2024/04/30 04:32
主要通过递归完成:
1 根节点是否相同,不相同,进行第一次递归
2 根节点相同,在另外一个函数进行递归,判断子节点是否相同
#include <iostream>#include <stack>using namespace std; typedef struct tree{int key;structtree *left;structtree *right; } * pTree,Tree; void createTree(pTree & phead){int temp;scanf("%d",&temp);if(temp!=0){phead=(pTree)malloc(sizeof(Tree));phead->key=temp;createTree(phead->left);createTree(phead->right);}else{phead=NULL;} } void print(const pTree phead){ if(phead){printf("%d ",phead->key);print(phead->left);print(phead->right); } } bool hasSub(pTree phead1,pTree phead2){bool result = false;if(phead2 == NULL) //必须先判断phead2 再判断phead1 注意return true;if(phead1 == NULL)return false;if(phead1->key != phead2->key)return false; return hasSub(phead1->left,phead2->left) && hasSub(phead1->right,phead2->right); }bool hasSubTree(const pTree phead1,const pTree phead2){bool result=false;if( phead1 != NULL && phead2 != NULL){if(phead1->key==phead2->key)result=hasSub(phead1,phead2);if(!result) result=hasSubTree(phead1->left,phead2);if(!result) result=hasSubTree(phead1->right,phead2);}return result; }int main(){pTree pHead1=NULL;pTree pHead2=NULL;createTree(pHead1);//createTree(pHead2);print(pHead1);cout<<endl;createTree(pHead2);print(pHead2);cout<<endl;cout<<(bool)hasSubTree(pHead1,pHead2);return 0;}
运行结果:
0 0
- 二叉树的子结构
- 二叉树的子结构
- 二叉树的子结构
- 二叉树的子结构
- 二叉树的子结构
- 二叉树的子结构
- 二叉树的子结构
- 二叉树子结构
- 二叉树的子结构的判定
- 二叉树------树的子结构
- 树的子结构(二叉树)
- 二叉树23:树的子结构
- 判断二叉树的子结构
- 二叉树的子结构判断
- 20170928_二叉树的子结构
- 重构二叉树&&判断二叉树的子结构
- 【40】二叉树子结构
- 剑指offer-树的子结构 判断二叉树B是不是A的子结构
- 分糖果
- 为什么理想电流源的等效内阻是无限大
- 20140731 java 《文档在线预览功能》的实现简述
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》第七步--物理碰撞检测(2)--主角吃金币
- 曹连雨-曙光云计算与智慧城市战略及实践
- 二叉树的子结构
- 英语语法辨析----- 一
- 利用kendo ui window创建自己的promise window
- hdu 2^x mod n = 1(同余定理+暴搜)
- css控制右侧二维码浮动代码
- Watch The Movie
- java 动态代理详解
- 【数据结构和算法分析】二叉树的遍历
- 【Tooltip】WPF中Tooltip使用技巧总结