树的子结构(JAVA)】的更多相关文章

题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 思路 双递归:外层HasSubtree是一个先根遍历递归,内层isDirectSubTree是一个判断root2是不是root1的直接子结构的递归.步骤如下: 1.如果当前root1和root2的节点值相同,则可能为子结构,进入子递归判断. 2.若上一步找到子结构则返回true,否则递归判断root2是否为root1的左子树的子结构. 3.若上一步找到子结构则返回true,否则递归判断root2…
(输入两棵二叉树A和B,判断B是不是A的子结构.补充下,根据书中的代码来看,子结构的定义并不包括叶子节点下的null,也就是说只要B的存在数字的结构存在于A中就行,那么如果B是null树,那么就不属于A的子结构) 书中方法:书上的方法十分清晰,分为两个步骤,先在A树中找到B树的root.val,然后判断由该点向下是否完全包含B树的结构,直至遍历完A树. public boolean isChild(TreeNode aRoot, TreeNode bRoot){ //A树没有遍历完而且B树不为空…
问题描述: 输入两棵二叉树A和B,判断B是不是A的子结构.二叉树结点的定义如下: public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } 思路1: 递归 public static boolean HasSubtree(TreeNode root1,TreeNode root2) { boolea…
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入两棵二叉树A和B,判断B是不是A的子结构. 思路 1)先对A树进行遍历,找到与B树的根结点值相同的结点R: 2)判断A树中以R为根结点的子树是否包含B树一样的结构. 测试算例 1.功能测试(A.B为普通二叉树:B是或者不是A树的子结构) 2.特殊测试(任意一个或者两个树的根结点为null:左斜树:右斜树) Java代码 //题目:输入两棵二叉树A和B,判断B是不是A的子…
题目: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 分析: 注意这道题是判断B是不是A的子结构,而不是子树,这一点要注意下,且空树不是任意一个树的子结构. 判断的时候我们要从A树的根节点开始判断B是不是A的结构,递归依次判断B是不是A的左子树和右子树的子结构. 在子结构的判断上,也就是从两个根节点开始判断是否相同,然后递归判断左右节点的val是否相同,当出现B中节点为null的时候,返回true.A中节点为null时,返回false,节点不相同也返…
版权声明:本文为博主原创文章,未经博主允许不得转载. 题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构). 解题思路: 首先看牛客网给出的测试用例: 一般对于树的操作不像链表一样,操作更复杂,如果使用循环遍历的话,对于非完全二叉树规律难寻,一般通用的方法就是使用递归求解,本题也不例外,同样使用递归求解,求解的大体思路是首先判断B的根节点和A的根节点是否相同(这里的相同是指节点的值相同并且左右子节点相同),如果相同比较他们的左右子节点,这一步骤是…
树的子结构 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) public boolean HasSubtree(TreeNode root1, TreeNode root2) { boolean res = false; if(root2!=null&&root1!=null) { if (root1.val == root2.val) //注意这里不能直接返回,因为即使root1的值等于root2了, // 从根节点开始遍历时,最终若…
题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 题目代码 /** * 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) * Created by YuKai Fan on 2018/9/3. */ public class HasSubTree { public static void main(String[] args) { TreeNode a = new TreeNode(2); a.left…
剑指Offer:树的子结构[26] 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 解题思路 分为两步: 第一步:在树A中找到和树B的根节点的值一样的节点R 第二步:判断树A中以R为根节点子树是不是和树B一样的结构 Java题解 public class Solution {     public static boolean HasSubtree(TreeNode root1, TreeNode root2) {         boole…
  题目描述:   输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构)   解题思路:   要查找树A中是否存在和树B结构一样的子树,我们可以分为两步:第一步,在树A中找到和树B的根结点值一样的结点R:第二步,判断树A中以R为根结点的子树是不是包含和树B一样的结构.   对于这两步,第一步实际上就是树的遍历,第二步是判断是否有相同的结构,这两步都可以通过递归来实现.   举例:   编程实现(Java): public boolean HasSubtree…