如何将有序数组转换为二叉搜索树
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关如何将有序数组转换为二叉搜索树,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。算法:核心思想是利用二分法,不过有序数组和有序
千家信息网最后更新 2026年10月31日如何将有序数组转换为二叉搜索树
这篇文章将为大家详细讲解有关如何将有序数组转换为二叉搜索树,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
算法:
核心思想是利用二分法,不过有序数组和有序链表找到中间节点的方法不一致。
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安全错误
数据库的锁怎样保障安全
华服互联网科技靠谱吗
云信互联网科技有限公司
中资互联网科技
上海互联网科技有限公司
万易互联网科技
互联网科技集团
北京互联网络科技有限公司
科技互联网创业计划书
互联网科技汛
互联网科技公司名称
深圳市运趣互联网科技有限公司
互联网科技公司需要的职位
汽车互联网创新科技园
千方科技属于互联网企业吗
河南住房之家互联网科技
东莞新华互联网科技学校
美国互联网科技实力
山东子淼互联网科技有限公司
卡尔迅互联网科技有限公司
美国五大互联网科技公司市值多少
互联网和科技技术
互联网金融与金融科技
互联网未来科技
安徽鑫晟辉互联网科技
美国互联网前沿科技
宁夏科技产业互联网案例
互联网还是高科技吗
威龙国际互联网科技公司
怎样加入科技互联网
广东鹅鹅鹅互联网科技有限公司