如何将有序数组转换为二叉搜索树
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章将为大家详细讲解有关如何将有序数组转换为二叉搜索树,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。算法:核心思想是利用二分法,不过有序数组和有序
千家信息网最后更新 2025年12月01日如何将有序数组转换为二叉搜索树
这篇文章将为大家详细讲解有关如何将有序数组转换为二叉搜索树,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
算法:
核心思想是利用二分法,不过有序数组和有序链表找到中间节点的方法不一致。
1.对有序数组或者有序链表来说,把中间节点当作根节点2. 左边数组的值都小于根节点,作为左子树; 右边数组的值都大于根节点,作为右子树。3. 递归处理左子树和右子树,一直到只剩下一个节点。
题目1:
https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree/
代码实现:
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func sortedArrayToBST(nums []int) *TreeNode { if len(nums) == 0 { return nil } mid := len(nums)/2 root := new(TreeNode) root.Val = nums[mid] root.Left = sortedArrayToBST(nums[:mid]) root.Right = sortedArrayToBST(nums[mid+1:]) return root}// 算法:核心思想是利用二分法,对有序数组来说,把中间节点当作根节点,// 左边数组的值都小于根节点,作为左子树;// 右边数组的值都大于根节点,作为右子树。// 递归处理左子树和右子树,一直到只剩下一个节点。执行结果:
题目2:
https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree/
代码实现:
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } *//** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func sortedListToBST(head *ListNode) *TreeNode { if head == nil { return nil } if head.Next == nil { return &TreeNode{Val:head.Val} } // 小技巧:方便一次循环找到中间节点的前序节点,哨兵 s := new(ListNode) s.Next = head f := head for f != nil && f.Next != nil { // 精髓:快慢指针,1步,2步正好是二等分,可以延伸出三等份,n等分 s = s.Next f = f.Next.Next } res := new(TreeNode) res.Val = s.Next.Val r := s.Next.Next s.Next = nil // 左半部分单独成一个链表 res.Left = sortedListToBST(head) res.Right = sortedListToBST(r) return res}// 算法:利用二分法,这里是采用了链表二分法的常规做法,// 找到中间节点之后,将链表一分为二,左边的继续构造左子树,右边的为右子树// 递归处理,直到所有节点都处理完。执行结果:
关于如何将有序数组转换为二叉搜索树就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
节点
子树
数组
有序
二分法
处理
右边
算法
递归
搜索
代码
内容
思想
文章
更多
核心
知识
等分
篇文章
结果
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全员攻击支付宝完整
我的世界网易手机版服务器小游戏
国家整治网络安全
奥的斯服务器怎么转中文
戴尔R310服务器
ASA数据库安装不起
广西网络安全基地
如何更新数据库一列数据
霸州社区网络安全
安阳市网络安全和信息化
空间与独立服务器
实况足球数据库为什么用不了
小米电视3显示无法连接服务器
网络安全三审制
成都华为数据存储软件开发待遇
通达信手机版数据库源码
内蒙古诚信网络技术咨询项目
网络安全态势感知方案
项目管理软件开发方案
国服吃鸡选择哪个服务器好
服务器凋零刷石机广告
做电商好还是做数据库好
腐蚀服务器怎么看地图大小
火狐无法配置代理服务器
软件开发办理离职需要多久
广东5g服务器机柜厂家
曙光服务器登录管理口
高端服务器电脑机箱
dm7 数据库
网络技术部面试提问