![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉搜索树
weich37
这个作者很懒,什么都没留下…
展开
-
剑指offer面试题36 二叉搜索树与双向链表
题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 解题思路: 题目要求得到排序的链表,所以中序遍历二叉搜索树。在遍历的过程中进行节点的左右连接。 代码 class Solution { public: Node* treeToDoublyList(Node* root) { if(!root)...原创 2020-03-09 10:52:12 · 116 阅读 · 0 评论 -
剑指offer面试题54 二叉搜索树的第k大节点
题目描述: 给定一棵二叉搜索树,找出其中第k大的节点。 解题思路: 从二叉搜索树的定义可知,对二叉搜索树进行中序遍历就可以得到一个按关键字从大到小的一个递增有序序列,通过其递增序列获得第k大节点。 代码 class Solution { public: int kthLargest(TreeNode* root, int k) { int res = 0;//先进行中序遍历...原创 2020-03-07 20:46:40 · 97 阅读 · 0 评论 -
剑指offer面试题68 - I 二叉搜索树的最近公共祖先
题目描述: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 解题思路: 利用二叉搜索树的特性:若任一节点的左子树非空,则左子树中的所有节点值都小于根节点的值;若任一节点的右子树非空,则右子树中所有节点值都大于根节点的值。因此从二叉搜索树的根节点开始遍历,将根节点值和开始输入的两个节点值比较, 1、如果当前节点值在开始输入的两个节点值之间,则当前节点为最近的公共祖先; 2、如果当前节点...原创 2020-03-07 20:25:17 · 253 阅读 · 0 评论