题目 dfs求每一个节点向左走最大路径 + 节点值 + 向右走最大路径 搜索完后的最大值就是答案 dfs的出口和规则自己想有时候老想不通, 一看答案又一下子明白, 还是题目刷少了没经验 class Solution { public: int maxSum = 0xc0c0c0c0; // 全局变量 ...
分类:
其他好文 时间:
2020-06-21 15:36:34
阅读次数:
52
就是dfs,有个好听的名字叫回溯,其实就是穷举法,这种算法的时机复杂度为n^level ,效率还是很低的 import java.util.Stack; public class DFSTest { public static void main(String[] args) { char[] p ...
分类:
其他好文 时间:
2020-06-21 09:48:15
阅读次数:
45
图论习题整理 求先序排列 需要知道树的遍历方法,分别前中后序,代表着先访问根节点,左子树,右子树,或是左中右,或是左右中 现在给同一棵树的中后两个序列,求前序, 首先清楚这样的性质: 1.对于某个树(无论是子树还是本体,只要是棵完整的树就行),其前序遍历序列的第一个节点肯定是它的根,就是对于节点,其 ...
分类:
其他好文 时间:
2020-06-21 09:25:27
阅读次数:
59
拨云见日的一周。 Algorithm: 104:Maximum Depth of Binary Tree(Easy) 树的很多问题首先考虑遍历,几种前中后序遍历只是打印时机不同,实际都是一样的 DFS,此外 DFS 也可以不用递归,手动使用栈结构模拟,最后还可以使用 BFS,借助 queue 优先处 ...
分类:
其他好文 时间:
2020-06-21 00:05:54
阅读次数:
51
class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = rightclass Solution: def flatten(self, ...
分类:
其他好文 时间:
2020-06-20 21:12:01
阅读次数:
58
定义 对于一颗n个节点的无根树,找到一个点,使得把树变成以该节点为根的有根树时,最大节点数最少。换句话说,删除这个节点后最大连通块(一定是树)的节点数最少。 分析 该问题跟树的最大独立集问题类似。先任选一个节点作为根,把无根树变成有根树,然后设d[i]表示以i为跟的子树的节点个数。只需要一次DFS。 ...
分类:
其他好文 时间:
2020-06-20 17:06:53
阅读次数:
65
##题面 Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。 你的任务是,对于给定的N,求出有多少种合法的放置方法。 Input 共有若干行,每行一个正整数N≤10,表示棋盘和 ...
分类:
其他好文 时间:
2020-06-19 23:18:56
阅读次数:
45
回溯法 思路: dfs,深度优先搜索。 代码: class Solution: def restoreIpAddresses(self, s: str) -> List[str]: def valid(segment): return int(segment) <= 255 if segment[0 ...
分类:
其他好文 时间:
2020-06-19 19:17:15
阅读次数:
63
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。 示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回: [ [5,4,11,2], ...
分类:
其他好文 时间:
2020-06-19 16:30:16
阅读次数:
54
我只放代码你们凑活看吧。。 参考了大佬 @墨染空 的题解 暴力代码 #include<bits/stdc++.h> typedef pair<int,int> pii; using namespace std; int n,m,bnum=0; pii bian[666]; int to[33],nx ...