[剑指Offer] 17.树的子结构
来源:互联网 发布:以色列人工智能武器 编辑:程序博客网 时间:2024/06/05 20:52
题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
【思路】要查找树A中是否存在和树B结构一样的子树,可以分成两步:
1.第一步在树A中找到和B的根节点的值一样的结点R;即当前树A包含子树B,HasSubtree(...)
2.第二步再判断树A中以R为根结点的子树是不是包含和树B一样的结构。即当前树A是否是子树B,IsSubtree(...)
1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *right; 6 TreeNode(int x) : 7 val(x), left(NULL), right(NULL) { 8 } 9 };*/10 class Solution {11 public:12 bool IsSubtree(TreeNode* pRoot1, TreeNode* pRoot2){13 if(pRoot2 == NULL)14 return true;15 if(pRoot1 == NULL)16 return false;17 if(pRoot1->val == pRoot2->val){18 return IsSubtree(pRoot1->left, pRoot2->left) && IsSubtree(pRoot1->right, pRoot2->right);19 }else{20 return HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2);21 }22 }23 24 bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){25 if(pRoot1 == NULL || pRoot2 == NULL)26 return false;27 return IsSubtree(pRoot1,pRoot2) || HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2);28 }29 };
阅读全文
0 0
- 剑指offer-17.树的子结构
- 剑指Offer--17.树的子结构
- [剑指Offer] 17.树的子结构
- 剑指offer:判断树的子结构
- 【剑指offer】树的子结构
- 【剑指offer】Q18:树的子结构
- 剑指offer--17树的子结构
- 剑指offer--树的子结构
- 剑指Offer之 - 树的子结构
- 剑指offer 18 - 树的子结构
- 剑指Offer-树的子结构
- 剑指offer之树的子结构
- 《剑指offer》树的子结构
- 剑指offer—树的子结构
- 剑指Offer-18-树的子结构
- 剑指offer:树的子结构
- 【剑指offer】之树的子结构
- 剑指offer 17 树的子结构
- [剑指Offer] 13.调整数组顺序使奇数位于偶数前面
- [剑指Offer] 14.链表中倒数第k个结点
- [剑指Offer] 15.反转链表
- 简单总结一下Java和javascript 中对于 josn对象、字符串的处理。
- [剑指Offer] 16.合并两个排序链表
- [剑指Offer] 17.树的子结构
- [剑指Offer] 18.二叉树的镜像
- [算法] 二维数组(长宽相等)逆时针旋转90°算法
- [剑指Offer] 19.顺时针打印矩阵
- [剑指Offer] 20.包含min函数的栈
- [剑指Offer] 21.栈的压入、弹出序列
- [剑指Offer] 22.从上往下打印二叉树
- [BinaryTree] 二叉搜索树(二叉查找树、二叉排序树)
- C++学习之路(21)---复合类型