当前位置: 首页 > article >正文

力扣1382:将二叉搜索树便平衡

给你一棵二叉搜索树,请你返回一棵 平衡后 的二叉搜索树,新生成的树应该与原来的树有着相同的节点值。如果有多种构造方法,请你返回任意一种。

如果一棵二叉搜索树中,每个节点的两棵子树高度差不超过 1 ,我们就称这棵二叉搜索树是 平衡的 。

示例 1:

输入:root = [1,null,2,null,3,null,4,null,null]
输出:[2,1,3,null,null,null,4]
解释:这不是唯一的正确答案,[3,1,4,null,2,null,null] 也是一个可行的构造方案。

示例 2:

输入: root = [2,1,3]
输出: [2,1,3]

思想:先用中序遍历将该搜素树存入数组中,然后创建平衡二叉树。

代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
void inOrderTraverse(struct TreeNode* root, int* pos, int arr[]) {
    if(root == NULL) return;
    inOrderTraverse(root->left, pos, arr);
    arr[(*pos)++] = root->val;
    inOrderTraverse(root->right, pos, arr);
}

struct TreeNode* create(int *nums, int low, int high) {
    if(low > high) return NULL;
    int mid = (low + high) / 2;
    struct TreeNode* t = (struct TreeNode*)malloc(sizeof(struct TreeNode));
    t->val = nums[mid];
    t->left = create(nums, low, mid - 1);
    t->right = create(nums, mid + 1, high);
    return t;
}

struct TreeNode* balanceBST(struct TreeNode* root){
    int arr[10000];
    int *pos = (int*)malloc(sizeof(int));
    *pos = 0;
    inOrderTraverse(root, pos, arr);
    return create(arr, 0, *pos - 1);
}


http://www.kler.cn/a/419954.html

相关文章:

  • Qt几何数据类型:QLine类型详解(基础向)
  • Vue框架开发一个简单的购物车(Vue.js)
  • Android笔记【12】脚手架Scaffold和导航Navigation
  • ultralytics-YOLOv11的目标检测解析
  • java基础教程3 java基础语法
  • 在Java中使用Apache POI导入导出Excel(六)
  • Scala的模式匹配变量类型
  • 方寸 i560 安全存储加密芯片 SoC 存储安全芯片技术手册
  • Ubuntu24.04配置DINO-Tracker
  • php+Mysql单页支持不同数据结构不同查询条件查搜多表实例
  • 006 MATLAB编程基础
  • ansible自动化运维(一)配置主机清单
  • 在html页面显示一个变量,而这个变量中有xss脚本,如何安全的把这个变量原样展示出来
  • 360笔试题之LINUX和UNIX篇
  • 数据结构——排序第三幕(深究快排(非递归实现)、快排的优化、内省排序,排序总结)超详细!!!!
  • 【Debug】hexo-github令牌认证 Support for password authentication was removed
  • Node.js-Mongodb数据库
  • 电脑显示器拔插DVI线后副屏不显示
  • 【机器学习】机器学习学习笔记 - 监督学习 - 逻辑回归分类朴素贝叶斯分类支持向量机 SVM (可分类、可回归) - 04
  • K8S版本和istio版本的对照关系
  • 数学建模——Topsis法
  • scrapy豆瓣爬虫增强-批量随机请求头
  • 使用pyQT完成简单登录界面
  • 【k8s】监控K8S集群
  • 现代应用程序中基于 Cell 架构的安全防护之道
  • MySQL Linux 离线安装