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

C语言面试题之最小高度树

最小高度树

实例要求

  • 1、给定一个有序整数数组,元素各不相同且按升序排列;
  • 2、编写一个算法,创建一棵高度最小的二叉搜索树
  • 示例:
给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:0 / \ -3   9 /   / -10  5 

实例分析

  • 一、算法思想:
  • 使用递归来实现将有序数组转换为二叉搜索树
  • 二、具体步骤:
  • 1、找到数组的中间元素,将其作为根节点;
  • 2、将数组分成左右两部分,分别递归地构建左子树和右子树
  • 3、返回根节点;

示例代码

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/struct TreeNode* sortedArrayToBSTUtil(int* nums, int start, int end) {if (start > end) {return NULL;}int mid = start + (end - start) / 2; // 找到中间元素的索引struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));root->val = nums[mid]; // 中间元素作为根节点的值root->left = sortedArrayToBSTUtil(nums, start, mid - 1); // 递归构建左子树root->right = sortedArrayToBSTUtil(nums, mid + 1, end); // 递归构建右子树return root;
}struct TreeNode* sortedArrayToBST(int* nums, int numsSize) {if (numsSize == 0) {return NULL;}return sortedArrayToBSTUtil(nums, 0, numsSize - 1);
}

运行结果

在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/334910.html

相关文章:

  • 【随笔】Git 高级篇 -- 整理提交记录(上)cherry-pick(十五)
  • 上门服务小程序|上门服务系统|上门服务软件开发流程
  • Vuex(vue 项目中实现 频繁、大范围数据共享的技术方案)
  • 【Spring Cloud】服务容错中间件Sentinel入门
  • 算法刷题记录 Day36
  • 面试必问 - CSS 中元素居中小技巧
  • Chatgpt润色论文
  • 51单片机实验02- P0口流水灯实验
  • 使用git 和 github协作开发
  • DataX,MongoDB数据导入hdfs与mysql
  • 【OpenCV-颜色空间】
  • 电脑硬盘分区表的两种格式:MBR 和 GPT
  • kafka 常用非基础的核心设置项
  • 杂谈 EV之我见
  • 白色磨砂质感html5页源码
  • sqlite建立数据库
  • HTML5标签(网页编程)
  • RabbitMQ小记
  • 【备忘录】docker-maven-plugin 使用
  • 一起学习python——基础篇(10)
  • LoRa自组网络设计 6
  • C++手撕红黑树
  • 计算机中,逻辑端口
  • SV学习笔记(一)
  • 大型商业银行基础设施的用户安全管理创新与实践
  • 数据库入门-----SQL基础知识
  • 本地代码第一次提交到远程仓库gitee
  • 蓝桥杯刷题 深度优先搜索-[178]全球变暖(C++)
  • C语言-函数指针-快速排序算法(书籍示例-入门)
  • # 计算机视觉入门