ICode9

精准搜索请尝试: 精确搜索
  • 验证二叉搜索树(二叉搜索树的中序遍历是递增的)2022-04-18 00:36:28

    验证二叉搜索树 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。   示例 1: 输入:root = [

  • 449. 序列化和反序列化二叉搜索树2022-04-16 10:03:41

    449. 序列化和反序列化二叉搜索树 序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。 设计一个算法来序列化和反序列化 二叉搜索树 。 对序列化/反序列化算法的工作方式没有限制

  • leetcode 95 不同的二叉搜索树2022-04-14 09:35:35

    你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。 示例 1: 输入:n = 3 输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]] 示例 2 输入:n = 1 输出:[[1]] 来源:力扣(LeetCode) 链

  • 108. 将有序数组转换为二叉搜索树2022-04-01 11:03:22

    ✅做题思路or感想: 构建二叉树的基本思想:找头节点,分割左右子树的序列 二叉搜索树的找头节点很简单:中间的节点就是头节点,并且就可以就着中间节点进行分割左右子树的序列 class Solution { public: TreeNode* sortedArrayToBST(vector<int>& nums) { //当序列为空,则证明

  • 二叉堆2022-03-30 18:35:11

    插入: void modify ( int pos ) { if ( pos == 1 || H[ pos / 2 ] <= H[ pos ] ) return ; else { swap ( H[ pos / 2 ] , H[ pos ] ) ; modify ( pos / 2 ) ; } } void Hinsert ( int val ) { H[ ++cnt ] = val

  • 701. 二叉搜索树中的插入操作2022-03-30 17:00:06

    ✅做题思路or感想: 这里的插入值的操作不是在节点和节点直接插一个新节点,而是在老的二叉树的末尾新增节点。。。 故这里直接利用二叉搜索树的特性直接找新节点位置就好了 值得注意的是这里是需要让前一个节点链接新节点,也就是存在父子节点之间的赋值操作,所以这里要记录上一个节点!!! c

  • 530. 二叉搜索树的最小绝对差2022-03-29 21:33:31

    ✅做题思路or感想: 对于二叉搜索树,用中序遍历时,二叉树的节点值是递增的 对于二叉搜索树,用中序遍历时,二叉树的节点值是递增的 对于二叉搜索树,用中序遍历时,二叉树的节点值是递增的 虽然这里求的是树中任意两个不同节点的最小差值,但是由于二叉搜索树在中序遍历中是单调递增的,所以只需

  • 二叉堆第一个非叶子结点的索引2022-03-29 12:32:53

    在堆排序中,需要确定二叉堆第一个非叶子结点的索引。将大小为 N 的二叉堆保存于数组(使用索引 0),其第一个非叶子结点的索引为 [N/2]-1。 由完全二叉树的叶子结点个数知对于大小为 N 的完全二叉树(二叉堆是特殊的完全二叉树),其叶子结点总数为 [(N+1)/2]; 设所求索引为 x,则 N-1-x = [(N+1

  • 剑指 Offer 54. 二叉搜索树的第k大节点2022-03-28 23:02:40

    一、题目    二、题目理解   1.因为是二叉树搜索树(二叉树排序树),所以可以用中序遍历,先右 中 后左 进行(右边最大的)   2.每次dfs的时候 记录一次,当记录数等于 k 的时候,当前值就是最大k节点   3.如果进行右边的时候,没有达到最大k节点,我们继续向左边的子节点进行查找,直到找到

  • BSTree-二叉查找树2022-03-26 16:31:12

     BSTree的全称: Binary Search Tree   【规则】 # 左子节点的值总是小于父节点 # 右子节点的值总是大于父节点   【添加,查找】 # 添加和查找相对简单,按着规则来就可以,比当前值小左边(蓝色),大在右边(黄色)  【删除】 # 首先是要找到要删除的节点,然后再按下面的情况来删除 (a) 待

  • 【算法框架】二叉搜索树BST2022-03-21 22:01:33

    【算法框架】二叉搜索树BST 提取自labuladong得算法小抄 查找数是否存在 void BST(TreeNode root,int target){ if (root.val == target){ ... ... //找到目标之后,所需要做的事 } //递归 if (root.val < target) BST(root.right,target); if (root.val > ta

  • 02_二叉搜索树_求一个节点的前驱与后继节点2022-03-21 10:32:02

    1.前驱节点:中序遍历时的前一个节点 如果是二叉搜索树,前驱节点就是前一个比它小的节点,即肯定是左子树的部分 1.node.left != null,则其前驱节点是左子树中的最大那个,即左子树的右孩子的右孩子…right == null2.node.left == null &&node.parent != null,那么其前驱节点是其父节

  • 剑指 Offer 54. 二叉搜索树的第k大节点2022-03-20 23:06:02

    剑指 Offer 54. 二叉搜索树的第k大节点 题目 链接 https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/ 问题描述 给定一棵二叉搜索树,请找出其中第 k 大的节点的值。 示例 输入: root = [3,1,4,null,2], k = 1 3 / 1 4   2 输出: 4 提示 1 ≤ k

  • 剑指 Offer 33. 二叉搜索树的后序遍历序列2022-03-19 18:03:28

    剑指 Offer 33. 二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树: 5 / \ 2 6 / 1 3 示例 1: 输入: [1,6,3,2,5] 输出: false 示

  • leetcode98_验证二叉搜索树2022-03-06 15:34:09

    这道题有个大陷阱就是,不能单纯比较根节点和左右两个子节点的关系。 所以需要中序遍历,让每个子节点和它的上一个节点进行对比。 class Solution { TreeNode pre = null; public boolean isValidBST(TreeNode root) { if(root == null) return true; boolea

  • leetcode [701. 二叉搜索树中的插入操作](https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/)2022-03-03 11:32:10

    # leetcode [701. 二叉搜索树中的插入操作](https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/) 给定二叉搜索树(BST)的根节点  `root` 和要插入树中的值 `value` ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 **保证** ,新值和原始二叉搜索

  • 108. 将有序数组转换为二叉搜索树2022-03-02 21:01:32

    题目描述:   给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 提示: 1 <= nums.length <= 104 -104 <= nums[i] <= 104 nums 按 严格递增

  • 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先2022-03-02 14:02:42

    剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己

  • 96. 不同的二叉搜索树2022-03-01 10:33:11

    96. 不同的二叉搜索树 题目链接:96. 不同的二叉搜索树(中等) 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n = 3输出:5 示例 2: 输入:n = 1输出:1 提示: 1 <= n <= 19 解题思路 确定dp数组

  • 算法:有序数组生成二叉搜索树2022-02-27 12:01:28

    最近面试的时候遇到这个题目,但当时没有答出来,结束之后我恶补了一下,并在此记录一下加深印象。 二叉搜索树 二叉搜索树的每个节点总是大于它的左节点,小于它的右节点,这便是他的基本定义。因此相同数量的节点下它的高度是最低的,故而也是二叉树中查询效率最高的。而最重要的是:对二叉搜

  • 二叉查找树2022-02-27 10:35:49

    定义   1、若任意节点左子树非空,则左子树上所有节点的值均小于根节点的值   2、若任意节点右子树非空,则右子树上所有节点的值君大于根节点的值   3、任意节点的左右子树均为二叉查找树   4、无相同键值的节点   时间复杂度   插入和查找的时间复杂度均为lgN,但是在有序

  • 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先2022-02-25 09:59:41

    题目 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root

  • 二叉搜索树的第k大节点(简单)2022-02-24 20:58:52

    题目描述 给定一棵二叉搜索树,请找出其中第 k 大的节点的值。 示例1 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \   2 输出: 4 示例2 输入: root = [5,3,6,2,4,null,null,1], k = 3        5       / \      3   6     / \    2   4  

  • 669. 修剪二叉搜索树2022-02-24 13:35:55

    深度优先搜索 class Solution { public TreeNode trimBST(TreeNode root, int low, int high) { if (root == null){ return root; } /** * 如果根节点小于最小值,那其左子树肯定也小于最小值,那就只用判断右子树 * 同

  • leecode 530. 二叉搜索树的最小绝对差2022-02-24 12:32:43

    530. 二叉搜索树的最小绝对差         本题仍然是二叉搜索树,由于中序遍历搜索树是按照由小到大排列,因此只需要将树中序遍历,用一个pre树记录当前节点的前一个节点,然后判断结果大小,最终输出即可。这里pre容易搞错,以上图为例,当前节点为2时,我刚开始还以为pre是3,其实是1。因为

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有