![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
树、图
树与图的一些题目
Orange&1024
头秃
展开
-
LeetCode437.路径总和3
给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 10 / \5 -3/ \ \3 2 11/ \ \3 -2 1返回原创 2020-09-28 09:44:05 · 133 阅读 · 0 评论 -
LeetCode112.路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4-&原创 2020-09-28 09:34:37 · 116 阅读 · 0 评论 -
LeetCode107.二叉树的层次遍历2
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],3/ \9 20 / \15 7返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]程序输出为:15 7 9 20 3#include <iostream>#include <queue>#include<vector>#include原创 2020-09-28 09:29:18 · 203 阅读 · 0 评论 -
LeetCode101.对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ \2 2/ \ / \3 4 4 3二叉树[1,2,2,null,3,3,null,5,-2,-2,5]是对称的。 1 / \ 2 2 \ / 3原创 2020-09-28 09:27:48 · 128 阅读 · 0 评论 -
LeetCode207.课程表
你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]输出: true解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。示例 2:输入: 2, [[1,0],[0,1]]输出: false解释:原创 2020-09-28 09:22:47 · 153 阅读 · 1 评论 -
图的构造(邻接矩阵与邻接表)
两种方式构造下方的图#include<iostream>#include<vector>using namespace std;struct GraphNode { int label; vector<GraphNode*> neighbors; GraphNode(int x) : label(x) {};};//邻接矩阵一般用来表示稠密图 void construct_graph1() { const int MAX_N = 5; //5个顶原创 2020-09-27 21:11:09 · 215 阅读 · 0 评论 -
LeetCode199.侧面观察二叉树
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释:思路:层序遍历。遍历时将每一层的最后一个节点加入结果中。如何判断节点是最后一个?层次遍历时,将节点与层数绑定为pair,压入队列时,将节点与层数同时压入队列,并记录每一层中出现的最后一个节点。在层次遍历中,每一层中的最后一个节点最后遍历到,随时更新对每层的最后一个节点即可。#include<iostream>原创 2020-09-27 20:53:28 · 99 阅读 · 0 评论 -
LeetCode114.二叉树转链表
给定一个二叉树,将该二叉树就地(in-place)转换为单链表。单链表中节点顺序为二叉树前序遍历顺序。#include<iostream>#include<vector>using namespace std;struct TreeNode{ int val; TreeNode *left; //左孩子指针 TreeNode *right;//右孩子指针 TreeNode(int x) : val(x),left(NULL),right(NULL) {}};原创 2020-09-27 11:12:15 · 190 阅读 · 1 评论 -
LeetCode236.最近的公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5 和节点 1原创 2020-09-27 10:22:07 · 63 阅读 · 0 评论 -
LeetCode113.路径之和2
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[[5,4,11,2],[5,8,4,5]]思路:先序遍历。每遍历一个结点就将其值加入路径数组path原创 2020-09-27 09:54:31 · 48 阅读 · 0 评论 -
二叉树构造以及前序,中序,后序,层序三种遍历方式的实现
树是n(n>=0)个节点的有限集,且这些节点满足如下关系:(1)有且仅有一个节点没有父结点,该节点称为树的根。(2)除根外,其余的每个节点都有且仅有一个父结点。(3)树中的每一个节点都构成一个以它为根的树。二叉树在满足树的条件时,满足如下条件:每个节点最多有两个孩子(子树),这两个子树有左右之分,次序不可颠倒。二叉树构造#include<iostream>using namespace std;struct TreeNode{ int val; TreeNode *l原创 2020-09-27 09:35:10 · 120 阅读 · 0 评论