题目描述 给定一个二叉树和一个值sum,判断是否有从根节点到叶子节点的节点值之和等于sum的路径, 例如: 给出如下的二叉树,sum=22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1 返回true,因为存在一条路径5->4->11->2的节点值之和为22 Given a ...
分类:
其他好文 时间:
2020-08-01 12:30:47
阅读次数:
70
AcWing 240. 食物链 #include <bits/stdc++.h> using namespace std; const int N=1e6+10; int n,m; int p[N],d[N]; //find函数返回的是根节点 int find(int x){ if(p[x]!=x) ...
1.什么是二叉堆? 二叉堆本质上是一种完全二叉树,它分为两个类型。 最大堆—最大堆的任何一个父节点的值,都大于或等于它左、右孩子节点的值。 最小堆—最小堆的任何一个父节点的值,都小于或等于它左、右孩子节点的值。 二叉堆的根节点叫做堆顶。 最大堆和最小堆的特点决定了:最大堆堆顶是整个堆中的最大元素;最 ...
分类:
其他好文 时间:
2020-07-30 14:04:44
阅读次数:
66
数据结构--二叉树(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 树的常用术语(结合示意图理解) 节点 根节点 父节点 子节点 叶子节点 (没有子节点的节点) 节点的权(节点值) 路径(从root节点找到该节点的路 ...
分类:
编程语言 时间:
2020-07-30 01:09:31
阅读次数:
89
一: 完整代码 function $(element){ //传入响应式区域的dom根节点,返回响应式数据 let $$ = {}; //响应式数据 function getElements(el){ //传入一个元素节点,返回一个保存着该元素本身及所有子元素的数组 var elementList ...
分类:
其他好文 时间:
2020-07-29 21:48:36
阅读次数:
91
概念 线段树是一棵二叉树,线段是上每个结点对应的是序列的一段区间。如图(以下图片为引用) 容易发现,根节点对应的是整个区间[0,n-1].若一个结点对应的区间为[l,r],当l=r时,它是一个叶结点,没有左右儿子;否则他一定有两个儿子,令mid=(l+r)/2,则左儿子对应的区间为[l,mid],右 ...
分类:
其他好文 时间:
2020-07-28 16:49:56
阅读次数:
55
1.1题目 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。 1.2解答 很显然是二叉树的遍历问题。遍历每个点然后返回当前点的深 ...
分类:
其他好文 时间:
2020-07-28 10:07:40
阅读次数:
59
题目链接 https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/ 题解 递归解法 路径:一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 这道题和LeetCode687最长同值路径和Leet ...
分类:
其他好文 时间:
2020-07-27 23:35:37
阅读次数:
74
大顶堆和小顶堆 相关介绍可参看:北京大学空地学院数据结构与算法 第六章 6.8.2.2 小节 代码实现如下 class Heap: """二叉堆的实现 小顶堆""" def __init__(self): self.heapList = [0] # 默认一个 0 做占位,使得根节点的索引在 1 上 ...
分类:
编程语言 时间:
2020-07-27 23:32:44
阅读次数:
75
解答:本题主要采用递归的方式来构造二叉树 解答思路: 1、前序遍历的第一个节点必然等于后序遍历的最后一个节点,这个节点为根节点,然后再找一把刀,把中间的砍成左子树和右子树 2、前序的第二个节点,就是左子树的根节点,同时要找到这个节点在后序中的位置,那么从后序开头到这个位置之间,就是左子树了,这个位置 ...
分类:
其他好文 时间:
2020-07-27 15:44:35
阅读次数:
74