java实现:输入两颗二叉树A,B,判断B是不是A的子结构
来源:互联网 发布:金蝶软件版本 编辑:程序博客网 时间:2024/06/05 02:58
这道题是剑指offer题库中一道题,网上大都是C/C++的写法,不过算法最重要的是思想。
判断B是否为A的子结构分两步:
1.在A中找到和B的根结点值一样的结点R
2.判断A中以R为根结点的子树是不是包含和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=DoesTreeAHaveTreeB(root1,root2); } if(result==false){ result=HasSubtree(root1.left,root2); } if(result==false){ result=HasSubtree(root1.right,root2); } } return result; }public boolean DoesTreeAHaveTreeB(TreeNode root1,TreeNode root2){if(root2==null)return true;if(root1==null)return false;if(root1.val!=root2.val)return false;return DoesTreeAHaveTreeB(root1.left,root2.left)&&DoesTreeAHaveTreeB(root1.right,root2.right);}}注意空树情况,以及各种边界判断,程序用递归写的,比较容易理解。树尤其是二叉树是非常重要的存储结构,同时衍生出很多特殊结构,用于解决生活中的实际问题,希望在不断的学习练习中熟练掌握,灵活应用,更好的解决问题。
0 0
- java实现:输入两颗二叉树A,B,判断B是不是A的子结构
- java实现输入两棵二叉树A,B,判断B是不是A的子结构
- java 输入两颗二叉树A,B,判断B是不是A的子结构。
- 输入两颗二叉树A,B,判断B是不是A的子结构。
- 输入两颗二叉树A,B,判断B是不是A的子结构
- 输入两颗二叉树A和B,判断B是不是A的子结构
- 输入两颗二叉树A,B,判断B是不是A的子结构
- 输入两颗二叉树A,B,判断B是不是A的子结构
- 15.输入两棵二叉树A,B,判断B是不是A的子结构
- 题目:输入两棵二叉树A和B,判断B是不是A的子结构。
- 输入两棵二叉树A,B,判断B是不是A的子结构。
- 输入两棵二叉树A,B,判断B是不是A的子结构
- 输入两棵二叉树A,B,判断B是不是A的子结构。
- 输入两棵二叉树A和B,判断B是不是A的子结构
- 【剑指offer】面试题18:输入两颗二叉树A和B,判断B是不是A的子结构?
- 第6天 输入两棵二叉树A和B,判断B是不是A的子结构。
- 剑指offer 18---输入两棵二叉树A和B,判断B是不是A的子结构
- 输入两颗二叉树A,B,判断B是不是A的子结构。(树中可能有重复的值)
- HDU 3389 Game 阶梯博弈
- HDU 2044 一只小蜜蜂
- 【Matlab学习笔记】matlab的编程规则
- 我去,文档有错,场景顺逆时针切换
- Valid Parentheses
- java实现:输入两颗二叉树A,B,判断B是不是A的子结构
- Java工具类:给程序增加版权信息
- HDU 5024 Wang Xifeng's Little Plot
- 算一算是一年中的第几天
- 实现一个通讯录
- MCS求完美消去序列
- 最长无重复字符子串
- UVA 11210 - Chinese Mahjong
- 面向中文的自然语言编程