
DFS(深度优先算法)
一纸一清风
滋滋有味的学习 津津有味的生活
展开
-
104.二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。//普通的递归实现dfs/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * T...原创 2019-09-19 17:32:46 · 146 阅读 · 0 评论 -
101.镜像二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3/** * Definition for...原创 2019-09-19 22:28:50 · 121 阅读 · 0 评论 -
100.相同的树
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; *...原创 2019-09-19 22:39:00 · 118 阅读 · 0 评论 -
108.将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /-1...原创 2019-09-19 22:52:25 · 147 阅读 · 0 评论 -
112.路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2019-09-20 11:12:04 · 122 阅读 · 0 评论 -
257.二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明:叶子节点是指没有子节点的节点。示例:输入: 1/ \2 3\ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3/** * Definition for a binary tr...原创 2019-09-20 13:15:47 · 130 阅读 · 0 评论 -
46.全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]class Solution {public: vector<vector<int>> permute(vector<...原创 2019-09-21 22:21:18 · 124 阅读 · 0 评论 -
93.复原IP地址
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]class Solution {public: vector<string> restoreIpAddresses(string &s, int count, i...原创 2019-09-22 22:52:27 · 188 阅读 · 0 评论 -
22.括号生成
给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]class Solution {public: vector<string> v; int N; ...原创 2019-09-26 14:32:57 · 144 阅读 · 0 评论