题目: 不同的二叉搜索树 II:给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。 思路: 遍历每一个节点,并且得到每个节点的左右子树,然后获得每个子树的样子就可以得出来了。 自己想了半天没法实现,参考了一下网上大神的程序,写的很好,很好理解。 程序: # Definition ...
分类:
编程语言 时间:
2020-05-13 20:10:25
阅读次数:
140
什么是树? 在现实生活中有很多能体现出树的逻辑的例子。 例如:企业里的职位关系,也是一颗树。 再例如:操作系统的文件夹目录,也是一颗树。 那么以上的这些例子有什么共同点呢?为什么称它们为"树"呢? 因为它们都像自然界中的树一样,从同一个"根"衍生出许多的"枝干",再从每一个"枝干"衍生出许多更小的" ...
分类:
其他好文 时间:
2020-05-13 17:12:08
阅读次数:
62
为了防止二叉搜索树中性能大大降低的最坏情况出现,我们可以采用一些方法,如:随机化、分期化和最优化来使其达到平衡。 下面函数使用分区函数在线性时间内使一棵二叉搜索树达到完美平衡状态。我们先划分以便把中值节点放入树根,然后(递归地)对子树执行同样的操作。 1 void balanceR(link& h) ...
分类:
其他好文 时间:
2020-05-13 09:32:37
阅读次数:
45
在一个二叉搜索树中删除带有给定关键字的节点。这个删除操作的实现删除在BST中遇到的第一个带有给定关键字v的节点。它从上向下处理,为适当的子树作递归调用,直到要删除的节点位于树根处。然后,它用两棵子树结合的结果取代该节点--右子树中最小的节点成为树根,接着把它的左链接设置成指向左子树。 1 priva ...
分类:
其他好文 时间:
2020-05-13 09:18:33
阅读次数:
52
题目: 二叉搜索树中第K小的元素:给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 思路: 二叉搜索树具有良好的性质,一个节点左边的数小于该节点,右边的数大于该节点,因此想到了使用中序 ...
分类:
编程语言 时间:
2020-05-12 13:31:50
阅读次数:
68
描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root =? ...
分类:
其他好文 时间:
2020-05-10 21:38:39
阅读次数:
53
前置知识: BST二叉搜索树: 度娘曰: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值。 也就是说,你把它从根节点中序遍历一边就能得到一个从小到大的数列。 大概长这样子: 对于4:左边子树节点的权值为0 1 2 3,都比 ...
分类:
其他好文 时间:
2020-05-10 21:11:03
阅读次数:
186
题目地址:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/ 题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 ...
分类:
编程语言 时间:
2020-05-10 17:00:00
阅读次数:
76
二叉搜索树(英语:Binary Search Tree),也称有序二叉树(英语:ordered binary tree),排序二叉树(英语:sorted binary tree),是指一颗空树或者具有下列性质的二叉树:1、左子树上所有结点的值均小于它的根结点的值;2、右子树上所有结点的值均大于它的根 ...
分类:
其他好文 时间:
2020-05-10 16:55:47
阅读次数:
55
题目: 解答: 1 // 中序遍历即可。只需要记录一个pre指针即可。 2 3 4 class Solution { 5 public: 6 TreeNode* Convert(TreeNode* pRootOfTree) 7 { 8 if(pRootOfTree == nullptr) 9 { 1 ...
分类:
其他好文 时间:
2020-05-09 17:05:24
阅读次数:
63