
树
Huglight
这个作者很懒,什么都没留下…
展开
-
NowCoder 二叉树的下一个结点
题意:给出一个带父结点的二叉树中的一个结点,求出中序遍历中该结点的下一个结点思路:可以先找出根结点,之后进行中序遍历,如果当前结点的前一个结点为所给结点,那这个结点就是答案/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; Tre...原创 2020-02-12 00:04:34 · 100 阅读 · 0 评论 -
NowCoder 树的子结构 递归
题意:给两棵树A、B,问B是否是A的子结构,空树不是任何树的子结构思路:最简单的是用递归深搜,判断当前两树结构是否相同,或者大树左右子树是否和小树相同即可public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { if (root2 == null || root1...原创 2020-01-27 21:13:22 · 145 阅读 · 0 评论 -
LeetCode 105.从前序与中序遍历序列构造二叉树 递归
题意:给出一个二叉树的前序和中序遍历,求出这个二叉树思路:首先枚举中序遍历找到根节点,之后再向左向右递归,并缩小遍历范围,若存在左节点左树根就是start+1,右树根位置可以根据当前根在中序和前序中的相对位置确定class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { retu...原创 2019-12-26 17:35:35 · 146 阅读 · 0 评论 -
POJ 2342 Anniversary party 树形DP 独立集
题意:给一棵树,每个节点有一个权值,求树的独立集中最大权值思路:独立集表示为图中两点之间没有边相连的点集,在树上即选了该点就不能选该点的父亲。取dp[i][0]表示不选该点,i的子树的独立集的最大权值,dp[i][1]表示选了该点,i的子树的独立集的最大权值,则dp[i][0] = dp[i][0] + max(dp[j][0], dp[j][1]),表示不选该点时,选该点子节点和不选该点子节点...原创 2019-08-11 11:16:08 · 190 阅读 · 0 评论 -
POJ 1463 Strategic game 最小点覆盖 树形DP
题意:给定一棵树,求树的最小点覆盖(覆盖所有边的最少点数)思路:在最小点覆盖中,对于每条边,至少有一个点属于标记集合里。每个点设置两个状态,dp[i][0]表示不选该点时其子树的最小点覆盖数,dp[i][1]表示选了该点子树的最小点覆盖数,则dp[i][0] = dp[i][0] + dp[j][1]表示若该点不选,则其子节点必选,dp[i][1] = dp[i][1] + min(dp[j][...原创 2019-08-11 16:17:00 · 259 阅读 · 0 评论 -
ZOJ 1586 QS Network 最小生成树
题意:给n个节点,两个节点连接起来需要两个路由器和一条电线,每个节点有偏爱路由器(和这个节点相连的电线必须选这个路由器),给出所有节点相连电线的费用,和每个节点偏爱路由的费用,求出要将所有节点连接起来的最小费用思路:可以看出一条边的费用相当于电线的费用加上电线两边相连节点偏爱路由器的费用,用这个作为权值求最小生成树,即可得到最小费用#include<iostream>#inclu...原创 2019-08-25 19:36:55 · 164 阅读 · 0 评论