博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Convert Sorted List to Binary Search Tree 将有序链表转化为平衡二叉排序树
阅读量:4108 次
发布时间:2019-05-25

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

题目:

解答:

将上一篇中的 将有序数组转化为平衡二叉树改一下,先把链表存成数组。

代码:

class Solution {  public:	  TreeNode *sortedListToBST(ListNode *head) {		  if (head == NULL)			  return NULL;		  vector
num; while (head) { num.push_back(head->val); head = head->next; } TreeNode * res = sortedArrayToBST(num); return res; } private: TreeNode *sortedArrayToBST(vector
&num) { if (num.size() == 0) return NULL; TreeNode *root = new TreeNode(0); //新建一个节点作为根节点 build(root, 0, num.size() - 1, num); return root; } void build(TreeNode *root, int start, int end, vector
&num) { int mid = start + (end - start) / 2; //将中间值作为根节点的值 root->val = num[mid]; if (start <= mid - 1) //如果左边数组不为空 { TreeNode *node = new TreeNode(0); //新建一个节点,为根节点的左子节点,同时作为左子树的根节点传入递归程序 root->left = node; build(root->left, start, mid - 1, num); } if (mid + 1 <= end) //如果右边数组不为空 { TreeNode *node = new TreeNode(0); //新建一个节点,为根节点的右子节点,同时作为右子树的根节点传入递归程序 root->right = node; build(root->right, mid + 1, end, num); } } };

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

你可能感兴趣的文章
GCC出现warning: integer constant is too large for 'long' type"
查看>>
winAVR 全局变量volatile
查看>>
OP AMP - 单电源对运算放大器的影响
查看>>
如何正确选择AD/DA器件
查看>>
IAP ISP 区别
查看>>
STM32 注意的地方
查看>>
PCB Layout 中的直角走线、差分走线和蛇形线
查看>>
layout中蛇形线和差分线的使用
查看>>
ppm/℃是什么单位?什么意思?
查看>>
Java通过引用js脚本引擎实现精确计算
查看>>
面向对象-关于对象
查看>>
单向链表 实现(非线程安全)
查看>>
全国省市区信息,mysql数据库记录
查看>>
1.0 Linux文件系统
查看>>
2.0 Linux进程
查看>>
2.1 Linux 启动新进程
查看>>
2.2.1 进程管理,以及父子进程共享同一个文件资源时,文件的‘读写位置’会相互影响
查看>>
Linux 信号常量表
查看>>
Linux 错误码(error code)列表(头文件 ‘errno.h’)
查看>>
Linux 编程中的错误处理
查看>>