题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 题目分析 第一种方法:判断B树是不是A树的子结构,我们可以找出A中所有与B数根节点相等的元素,再以该元素为根节点遍历,判断以该节点为根节点的树是否包含B树的所有
前言 牛客网剑指offer的66道题,刷起来!每道题会提供简单的思路以及测试通过的代码 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 二叉树结构: class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int
题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 测试用例: 功能测试(树AB都是普通的二叉树;树B是或不是树A的子结构) 特殊输入测试(两颗树的一个或两个的根节点为nullptr;二叉树的所有节点都没有左子树或者右子树) 解题思路: 1)使用递归
public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { boolean ret = false; if(root1 == null || root2 == null) return ret; ret = helper(root1,root2); if(!ret) ret = helper(root1.left,root2); if
最优子结构:对比DFS,不是进行各种可选支路的试探,而是当下就可用某种策略确定选择,无需考虑未来(未来情况的演变也影响不了当下的选择)。只要一直这么选下去,就能得出最终的解,每一步都是当下(子问题)的最优解,那么最终得出的结果就是问题的最优解,这叫做最优子结构。 更书面的说法:如果