官方题解有很多高大上的方法,我这就将一个最容易想到、最直接的方法吧,比较详细(基本上没有压缩代码),有不懂的可以在评论区问我~~~若有不足欢迎大佬斧正(>人<;) 首先让我们来看看这个二叉树的题目(如下图) 看完题目,明确了一棵树的子树是到叶子节点结束的,这里抛出我开始做题的想法 如何找到子树的起始点?找到起始节点后,只能说明起始节点相同,万一树 s 里的子树结构里面有很多与树 t
解题思路 深度优先搜索。 相关代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val
这是别人问我的题,所以没有题目链接,名字也是我随便起的。 有一棵包含 n n n 个节点的树,节点编号从 1 1 1 到 n n n,以 1 1 1 为根,每条边都有一个权值。给你 m m m 次询问,每次询问一个子树,在子树中对每种边权的值 c c c 统计出现次数 c n t c cnt_{c} cntc,求 ∑ ( c ⋅ c n t c ) 2 \sum(c\cdot
1. 题目 2. 题解 符合树的子结构包含以下三种情况: 以节点 A 为根节点的子树 包含树 B ,对应 recur(A, B);树 B 是 树 A 左子树 的子结构,对应 isSubStructure(A.left, B);树 B 是 树 A 右子树 的子结构,对应 isSubStructure(A.right, B); /*** Definition for a binary tr