二叉搜索树

1、验证是否为二叉搜索树
中序遍历看是否为递增序列

2、平衡二叉搜索树
将升序序列转为二叉平衡搜索树

/***树的结构体* Definition for a binary tree node.* struct TreeNode {* 树节点的值*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {public:TreeNode* dfs(vector<int>& nums, int start, int end){if(start > end){return nullptr;}int mid = (start+end)/2;TreeNode* root = new TreeNode(nums[mid]);root->left = dfs(nums, start, mid-1);root->right = dfs(nums, mid+1, end);return root;}TreeNode* sortedArrayToBST(vector<int>& nums) {TreeNode* res = dfs(nums, 0, nums.size()-1);return res;}
};

将二叉搜索树变平衡

思路:将二叉搜索树先变为升序序列(用第一题的方法),再将升序序列变成平衡二叉搜索树(用第二题的方法)

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {public:vector<int> vec;void getvalue(TreeNode* root){if(root == nullptr){return;}getvalue(root->left);vec.push_back(root->val);getvalue(root->right);}TreeNode* makeBST(vector<int> nums, int start, int end){if(start > end){return nullptr;}int mid = (start+end)/2;TreeNode* root = new TreeNode(nums[mid]);root->left = makeBST(nums, start, mid-1);root->right = makeBST(nums, mid+1, end);return root;}TreeNode* balanceBST(TreeNode* root) {getvalue(root);return makeBST(vec, 0, vec.size()-1);}
};

二叉搜索树(平衡二叉搜索树)相关推荐

  1. 《恋上数据结构第1季》平衡二叉搜索树、AVL树

    AVL树 二叉搜索树缺点分析 改进二叉搜索树 平衡(Balance) 理想平衡 如何改进二叉搜索树? 平衡二叉搜索树(Balanced Binary Search Tree) AVL树 BST 对比 ...

  2. 看动画学算法之:平衡二叉搜索树AVL Tree

    简介 平衡二叉搜索树是一种特殊的二叉搜索树.为什么会有平衡二叉搜索树呢? 考虑一下二叉搜索树的特殊情况,如果一个二叉搜索树所有的节点都是右节点,那么这个二叉搜索树将会退化成为链表.从而导致搜索的时间复 ...

  3. 牛客题霸 [将升序数组转化为平衡二叉搜索树]C++题解/答案

    牛客题霸 [将升序数组转化为平衡二叉搜索树]C++题解/答案 题目描述 给出一个升序排序的数组,将其转化为平衡二叉搜索树(BST). 题解: 二叉搜索树的定义: 二叉搜索树或者是一棵空树,或者是具有下 ...

  4. 程序员面试金典 - 面试题 17.11. 单词距离(multimap平衡二叉搜索树)

    1. 题目 有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(相隔单词数). 如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗? 示例: 输入 ...

  5. 红黑树 平衡二叉搜索树_红黑树:自我平衡的二叉搜索树,并举例说明

    红黑树 平衡二叉搜索树 什么是红黑树? (What is a Red-Black Tree?) Red-Black Tree is a type of self-balancing Binary Se ...

  6. 平衡二叉搜索树的创建

    平衡二叉搜索树 平衡二叉树:每个结点的左右子树高度差不超过1,左右子树均为平衡二叉树 搜索二叉树:左结点 < 根结点 <右结点 平衡二叉搜索树则是优化后的搜索二叉树,使得查找的效率提升,但 ...

  7. 数据结构与算法-平衡二叉搜索树

    平衡二叉搜索树 1.自平衡的二叉搜索树 2.平衡 (1)空树平衡 (2)非空树平衡 左右子树平衡 左右子树高度差绝对值 <= 1 3.平衡因子 左右子树的高度差的衡量值 -1 0 1 (一)平衡 ...

  8. VC++2012编程演练数据结构《9》平衡二叉搜索树

    平衡二叉搜索树 任何结点的左子树和右子树高度最多相差1的二叉搜索树. (1)AVL树的插入算法 a. 插入结点之后仍然是AVL树,则不调整: b. 插入结点之后不再满足AVL树条件,则进行调整,根据导 ...

  9. DFS算法之无序列表转换为平衡二叉搜索树

    题目简介:给定一个单链表,其中的元素不是有序排列的,将其转换为高度平衡的BST(二叉搜索树). 思路:我的思路就是一次遍历单链表,每遍历一个元素,就将其插入树中.在插入的过程中,先找到应该插入的位置, ...

最新文章

  1. PHP文件上传和文件操作案例
  2. 通过IDoc来实现公司间STO场景中外向交货单过账后自动触发内向交货单的功能 - Part I
  3. leetcode 85. Maximal Rectangle | 85. 最大矩形(单调栈)
  4. 03_FindInPartiallySortedMatrix.cpp
  5. Use BAdI to link appointment to a given opportunity during creation
  6. P3449-[POI2006]PAL-Palindromes【结论题,字符串hash】
  7. Makefile和Cmake的联系与区别
  8. 支持向量机(SVM)-文本分类 (1)
  9. P4822 [BJWC2012]冻结
  10. 论文笔记_CV_AD_A Survey of Computer Vision Research for Automotive Systems
  11. VFP9 连接mysql代码示例
  12. Silvaco 学习笔记——物理模型:载流子产生复合模型
  13. veu使用element UI 表格问题
  14. 用来快速检查hdf5,npy和npz文件的Python脚本
  15. 你知道如何从零开始学c++游戏编程吗
  16. oracle ora 3136,一次ORA-3136的处置
  17. 客制化键盘编程_最全最细客制化键盘指南!(上)
  18. vim 匹配行首到某个特定字符
  19. IEEE Fraud Detection Competition思路探索
  20. SEO Sitemap优化

热门文章

  1. 关于假如有Thread1、Thread2、Thread3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?
  2. 软件测试课堂笔记之语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,在eclipse上新建测试用例
  3. 两个服务器组虚拟机,linux 两台虚拟机
  4. 【矩阵论】04——线性空间——子空间
  5. 简单的交换排序法(选择排序)。
  6. 数学计算机关系论文2000字,数学与计算机科学论文2000字_数学与计算机科学毕业论文模板...
  7. java 关于Scanner类中hasNextXxx()方法
  8. 常用的三种线性模型算法--线性回归模型、岭回归模型、套索回归模型
  9. 2019年第十届蓝桥杯C/C++ 省赛B组真题+题解
  10. RGB图像卷积生成Feature map特征图过程