牛客网-树的子结构(java)
来源:互联网 发布:恋夜秀场源码 编辑:程序博客网 时间:2024/06/02 02:10
思路:递归法求解根节点是否值一致,不一致则求左右子树是否有子结构。分为两种情况讨论,1:初始根节点与要求节点的根节点一致,比较两棵树的左右子树。这种情况还需分两种情况,(1)即左右子树不一致,该情形下需要将初始根节点的左右子树匹配要求子树,递归初始根节点与要求节点的两种情形;(2)能够匹配到子结构,则输出true。2:初始根节点与要求节点值不一致,则直接递归调用初始根节点的左右子树与要求节点的匹配。
代码:
/**public 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; boolean leftFlag = false; boolean rightFlag = false; if(root2 == null){ return false; } if(root1 == null){ return false; } if(root1.val == root2.val){ if(root1.left != null){ if(root2.left == null){ leftFlag = true; }else{ leftFlag = HasSubtree(root1.left,root2.left); } }else{ if(root2.left == null){ leftFlag = true; } } if(root1.right != null){ if(root2.right == null){ rightFlag = true; }else{ rightFlag = HasSubtree(root1.right,root2.right); } }else{ if(root2.right == null){ rightFlag = true; } } if(leftFlag && rightFlag){ result = true; } if(!result){ if(root1.left != null){ leftFlag = HasSubtree(root1.left,root2); }else{ leftFlag = false; } if(root1.right != null){ rightFlag = HasSubtree(root1.right,root2); }else{ rightFlag = false; } result = leftFlag || rightFlag; } }else{ if(root1.left != null){ leftFlag = HasSubtree(root1.left,root2); }else{ leftFlag = false; } if(root1.right != null){ rightFlag = HasSubtree(root1.right,root2); }else{ rightFlag = false; } if(leftFlag || rightFlag){ result = true; } } return result; }}end
阅读全文
0 0
- 牛客网-树的子结构(java)
- 树的子结构(Java实现)
- 树的子结构(java版)
- 牛客网 | 树的子结构
- 【牛客网】树的子结构
- 剑指Offer:树的子结构(JAVA)
- 剑指offer:树的子结构(java)
- java之树的子结构
- 树的子结构—递归、Java
- 树的子结构java实现
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- CodeChef:Fombinatorial(数论 & 逆元)
- PROTEL 99SE 使用记录--@子木总结编写
- Struts2返回JSON数据的具体应用范例
- Java-Servlet完全教程
- 数据库连接池
- 牛客网-树的子结构(java)
- iPhone真机控件获取 app-inspector
- 注释转换
- Android-25种开源炫酷动画框架
- helloworld
- python web py入门-4-请求处理(上)
- Dagger2+MVP
- 解决getOutputStream() has already been called for this response
- centos源码安装php7.1.1