给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3 1 class Solution ...
分类:
其他好文 时间:
2019-12-01 19:08:33
阅读次数:
76
休息了两天,状态恢复了一下,补充点基础知识。 二叉搜索树 搜索树数据结构支持许多动态集合操作,包括Search,minimum,maximum,predecessor(前驱),successor(后继),INSERT和DELETE等。因此我们使用一颗搜索树既可以作为一个字典又可以作为一个优先队列。且 ...
分类:
其他好文 时间:
2019-11-30 21:13:07
阅读次数:
96
"题目链接" 【题解】 我们可以枚举这棵树的根节点在i处。 现在问题就变成。 1..i 1这i 1个节点组成的树和i+1..n这n i个节点组成的树的个数的问题了。 假设他们俩的结果分别是cnt1和cnt2. 那么答案就是cnt1 cnt2. 这显然是一个递归的问题。 因为4 5 6 7组成的二叉搜 ...
分类:
其他好文 时间:
2019-11-29 23:51:56
阅读次数:
78
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 ...
分类:
其他好文 时间:
2019-11-23 13:07:21
阅读次数:
86
对于二叉搜索树,我们规定任一结点的左子树仅包含严格小于该结点的键值,而其右子树包含大于或等于该结点的键值。如果我们交换每个节点的左子树和右子树,得到的树叫做镜像二叉搜索树。 现在我们给出一个整数键值序列,请编写程序判断该序列是否为某棵二叉搜索树或某镜像二叉搜索树的前序遍历序列,如果是,则输出对应二叉 ...
分类:
编程语言 时间:
2019-11-22 01:16:01
阅读次数:
145
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 题目描 ...
分类:
编程语言 时间:
2019-11-21 20:04:27
阅读次数:
109
什么是回溯法? S: 回溯法官网概念是一个类似枚举搜素尝试的过程,是一种选优搜索树,按照某个条件来向前搜索,如果满足条件的时候,就“回溯”,返回到树的上一层,重新试探其他的结果,直到遍历完所有的解空间。个人理解就是该问题的解可以构建一棵解空间树,该题就可以使用回溯法来解决,下面我们使用了N皇后这个经 ...
分类:
编程语言 时间:
2019-11-20 23:27:54
阅读次数:
79
class Solution: def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode': if p.val>q.val: p,q=q,p if q.val<root.va ...
分类:
其他好文 时间:
2019-11-19 17:11:48
阅读次数:
93
递归理解起来还是有点难,弄清楚搞了不短的时间 package com.puple.atto.datastructure;import java.util.LinkedList;import java.util.Queue;public class BST<E extends Comparable<E ...
分类:
编程语言 时间:
2019-11-19 17:01:25
阅读次数:
71
红黑树第一部分:介绍 红黑树是一种自平衡的二叉搜索树(BST),其中每个节点遵循以下规则。 每个节点都有红色或黑色 树的根总是黑色的 没有两个相邻的红色节点(红色节点不能有红色的父节点或红色的子节点) 从节点(包括根)到其任何子代NULL节点的每条路径都具有相同数量的黑色节点 为什么要用红黑树 大多 ...
分类:
其他好文 时间:
2019-11-19 13:56:40
阅读次数:
80