题目: 题目解析: 这个题目和之前我们做的稍微有一点不一样,需要我们在函数里面再写一个函数才能够进行递归,还有一种则是广度优先搜索的方法来求解这道题,这两种方法都需要掌握。这里先给出递归解法,迭代的方法稍后在补充。递归的方法你看看代码自然就懂了: # Definition for a binary ...
分类:
编程语言 时间:
2020-09-09 18:44:42
阅读次数:
24
题目: 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 题目解析: 方法一: 这个题目很明显就可以用递归来做,有关树的题目用递归来做基本上是我们需要想到的首选!如果两个树是相同的,我们只需要比较其树根是相同的,同时递归调用比较树根 ...
分类:
编程语言 时间:
2020-09-09 18:40:26
阅读次数:
32
闲的没事翻新题,突然想起笛卡尔树还没学,于是写了写笛卡尔树的模板题。 P5854 【模板】笛卡尔树 题意 给一个排列p1pn,i号点权值为pi,要求建一棵以编号为关键字的二叉搜索树(中序序列为1n),且以权值为关键字的小根堆。 n ? 1e7 思路分析 难度在于O(n)建树。但既然编号是连续的,那么 ...
分类:
其他好文 时间:
2020-09-08 20:42:17
阅读次数:
37
树回归 当回归的数据呈现非线性时,就需要使用树回归。 树回归的基本逻辑 遍历所有特征 针对某一特征,遍历该特征的所有值 针对某一特征值,进行划分数据,计算出划分数据之后的总方差, 若总方差最小,记下特征和特征值 当遍历完所有特征后,就能够获得最小方差的特征和特征值,并以此作为树的结点,划分左右子树, ...
分类:
其他好文 时间:
2020-09-07 19:22:59
阅读次数:
74
一、实现思想 平衡二叉树比二叉查找树升级在哪里? 平衡二叉树是在二叉查找树的属性『左小右大』的基础上做一个调整,确保每一个节点的左右子树高度差不大于1,这样在运用『左小右大』进行查找时,就可以一下子排除许多数。最直观的,平衡二叉树就不会有像二叉查找树那样一边倒的例子。 如何确保每个节点的左右子树高度 ...
分类:
其他好文 时间:
2020-09-07 19:09:38
阅读次数:
57
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解题思路: 这个题目其实非常基础了,也就是直接使用BFS广度优先搜索算法对整棵二叉树进行遍历即可,我们最后返回的是一个数组 "[]",把遍历之后的元素放到这个数组当中即可。为了进行BFS,我们首先新建一个队列,将树根部的节点放到队列里 ...
分类:
编程语言 时间:
2020-09-04 17:24:39
阅读次数:
59
一、试写一个判别给定二叉树是否为二叉排序树的算法,设此二叉树以二叉链表作存储结构,且树中结点的关键字均不同。 答: 由分析可以知道,通过教材所学的知识我们很容易知道二叉排序树的特点。按照中序遍历的顺序,应当符合当前遍历到的节点值大于前一个遍历到的节点值,所以我们最终得到的中序遍历序列是一个有序序列, ...
分类:
编程语言 时间:
2020-09-03 16:43:50
阅读次数:
48
设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。 如何反序列化或序列化二叉树是没有限制的,你只需要确保可以将二叉树序列化为一个字符串,并且可以将字符串反序列化为原来的树结构。 对二进制树进行反序列化或序列化的方式没有限 ...
分类:
其他好文 时间:
2020-09-03 16:42:35
阅读次数:
31
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 Python # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.r ...
分类:
其他好文 时间:
2020-09-02 16:53:04
阅读次数:
42
一、假设二叉排序树以后继线索链表作存储结构,编写出该二叉排序树中所有大于a且小于b的关键字的算法。 答: 本实现要求输出二叉排序树中的所有大于a且小于b。由二叉排序树的相关知识我们很容易知道:用递归的方式进行遍历,遇到大于a且小于b的关键字时即输出。 该算法实现的伪代码如下: /* 函数名称:输出二 ...
分类:
编程语言 时间:
2020-08-31 13:11:45
阅读次数:
55