博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 108——将有序数组转化为二叉搜索树
阅读量:6359 次
发布时间:2019-06-23

本文共 999 字,大约阅读时间需要 3 分钟。

1. 题目

2. 解答

一棵高度平衡的二叉搜索树意味着根节点的左右子树包含相同数量的节点,也就是根节点为有序数组的中值

因此,我们将数组的中值作为根节点,然后再递归分别得到左半部分数据转化的左子树和右半部分数据转化的右子树即可。

递归终止的条件是数组为空,这时候返回 NULL。

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode* sortedArrayToBST(vector
& nums) { int num = nums.size(); if (num == 0) return NULL; // 数组为空 int mid = num / 2; TreeNode * tree = new TreeNode(nums[mid]); // 中值作为根节点 vector
left_nums = vector
(nums.begin(), nums.begin() + mid); tree->left = sortedArrayToBST(left_nums); // 左子树 vector
right_nums = vector
(nums.begin() + mid + 1, nums.end()); tree->right = sortedArrayToBST(right_nums); // 右子树 return tree; }};

获取更多精彩,请关注「seniusen」!

转载地址:http://mpbma.baihongyu.com/

你可能感兴趣的文章
程序注释
查看>>
uoj#290. 【ZJOI2017】仙人掌(数数+仙人掌+树形dp)
查看>>
ng-route使用笔记
查看>>
2018-8-8面试准备
查看>>
ActiveXObject 安装
查看>>
MongoDB教程
查看>>
解决获取IP地址时出现“在一个非套…
查看>>
osx的终端软件iterm2 之 修改外观 和 常用快捷键小结
查看>>
Android自动化测试01-环境安装连接问题及解决
查看>>
九度 题目1523:从上往下打印二叉树 题目1521:二叉树的镜像
查看>>
ZOJ - 3703 Happy Programming Contest
查看>>
csa Round #66 (Div. 2 only)
查看>>
Get open Popups
查看>>
c#中两种不同的存储过程调用与比较
查看>>
设计模式-责任链模式(17)
查看>>
数论 + 公式 - HDU 4335 What is N?
查看>>
Public Prize
查看>>
生成 39 条形码
查看>>
抽象工厂理解
查看>>
计网第四章网络层(二)
查看>>