一. 回溯法 – 深度优先搜素 1. 简单概述 回溯法思路的简单描述是:把问题的解空间转化成了图或者树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所有可行解或者最优解。 基本思想类同于: 图的深度优先搜索 二叉树的后序遍历 【 分支限界法:广度优先搜索 思想类同于:图的广度优 ...
分类:
其他好文 时间:
2021-05-24 10:30:05
阅读次数:
0
无论是向量、列表、还是栈和队列,其保存的元素之间都存在一个线性次序,故它们都属于线性结构,树则不然,其元素之间并不存在直接后继或直接前驱的关系。不过可以对树附加某种约束,从而确定某种线性次序,因此树属于半线性结构。树有着不计其数的变种,在算法理论以及实际应用中,它们都扮演着最为关键的角色。之所以如此 ...
分类:
其他好文 时间:
2021-05-24 09:33:21
阅读次数:
0
检查子树。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断 T2 是否为 T1 的子树。 如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 T2 为 T1 的子树,也就是说,从节点 n 处把树砍断,得到的树与 T2 完全相同。 注意:此题相对书上原题略有 ...
分类:
其他好文 时间:
2021-05-24 07:55:54
阅读次数:
0
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果: [ [3], [2 ...
分类:
其他好文 时间:
2021-05-24 07:46:56
阅读次数:
0
概念 一棵二叉树由根结点、左子树和右子树三部分组成,若规定 D、L、R 分别代表遍历根结点、遍历左子树、遍历右子树,则二叉树的遍历方式有 6 种:DLR、DRL、LDR、LRD、RDL、RLD。由于先遍历左子树和先遍历右子树在算法设计上没有本质区别,所以,只讨论三种方式: DLR--前序遍历(根在前 ...
分类:
其他好文 时间:
2021-05-24 07:30:52
阅读次数:
0
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。 示例 1: 输入: 3 / \ 9 20 / \ 15 7输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。 提示: 节点值的范围在32位有 ...
分类:
其他好文 时间:
2021-05-24 06:31:03
阅读次数:
0
给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2给定的树 t: 4 / \ 1 2返回 true,因为 t 与 ...
分类:
其他好文 时间:
2021-05-24 05:46:08
阅读次数:
0
解决 TOP k 问题通常可采用 堆排序 和 快速排序的思想 1. 大根堆(前 K 小) / 小根堆(前 K 大): 时间复杂度O(NlogK) c++ STL 中提供了 priority_queue 实现堆的基本功能,比如 priority_queue <int> pq; 堆 pq 的元素都是 i ...
分类:
编程语言 时间:
2021-05-24 05:41:19
阅读次数:
0
【js】Leetcode每日一题-叶子相似的树 【题目描述】 请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 ...
分类:
Web程序 时间:
2021-05-24 03:53:04
阅读次数:
0
669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在唯一的答案。 所以 ...
分类:
其他好文 时间:
2021-05-24 03:02:37
阅读次数:
0