树的子结构
来源:互联网 发布:js如何覆盖css效果 编辑:程序博客网 时间:2024/05/18 17:57
题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
编程思路
分为两步:
1.在树A中查找和B的根节点的值一样的结点R,这实际上就是树的遍历。
2.判断A中以R为根节点的子树是不是和B有相同的结构,同样用递归,如果结点R的值和树B的根结点不相同,则以R为根节点的子树和B肯定不具有相同的结点;如果他们的值相同,则递归地判断他们各自的左右结点的值是不是相同,递归终止的条件是到达了树A或数B的叶结点。
程序代码(Java语言)
class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { boolean result = false; if(root1 != null && root2 != null) { if(root1.val == root2.val) result = DoesTree1HaveTree2(root1,root2); if(!result) result = HasSubtree(root1.left,root2); if(!result) result = HasSubtree(root1.right,root2); } return result; } public boolean DoesTree1HaveTree2(TreeNode root1,TreeNode root2) { if(root2 == null) return true; if(root1 == null) return false; if(root1.val != root2.val) return false; return DoesTree1HaveTree2(root1.left,root2.left) && DoesTree1HaveTree2(root1.right,root2.right); }}
阅读全文
0 0
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- HDU4547(tarjan算法 离线LCA)
- UITableView通过AutoLayout自动计算行高
- Android 6.0(API 23)及其以上动态申请的权限与申请权限的方法
- pyhton爬虫(10)——通过亚马逊商品评论时间分析商品销量分布情况
- 计算机网络基础知识
- 树的子结构
- Git基础:工作流程 + 实用命令
- Android 5.1 截屏事件分析(Power + VolumeDown)组合键分析
- io操作(代码)
- C语言实现顺序链表
- mysql高效分页
- iOS 使用UIPickerView三级联动实现选择日期年月日
- 设置androidstudio中模拟器数据库导出和Data访问权限
- PHP 引入phpExcel 后,round() 显示错误