博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode OJ:Convert Sorted List to Binary Search Tree(将排序好的链表转换成二叉搜索树)...
阅读量:5775 次
发布时间:2019-06-18

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

Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

由于对于这个二叉搜索树的要求是其必须是其必须是平衡的,所以应该使用递归。首先找到二叉树的中点。然后由这个中点作为根节点递归的在从左右子树上面取节点构成一颗二叉树。代码如下所示:

1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 /**10  * Definition for a binary tree node.11  * struct TreeNode {12  *     int val;13  *     TreeNode *left;14  *     TreeNode *right;15  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}16  * };17  */18 class Solution {19 public:20     int getLen(ListNode * head)21     {22         int count = 0;23         while(head){24             head = head->next;25             count++;26         }27         return count;28     }29 30     TreeNode * createBST(ListNode * head, int beg, int end)31     {32         if(beg > end)33             return NULL;34         int mid = beg + (end - beg)/2;35         ListNode * p = head;36         for(int i = beg; i < mid; ++i){37             p = p->next;38         }39         TreeNode * leftNode = createBST(head, beg, mid - 1);40         TreeNode * rightNode = createBST(p->next, mid + 1, end);41         TreeNode * root = new TreeNode(p->val);42         root->left = leftNode;43         root->right = rightNode;44         return root;45     }46     TreeNode* sortedListToBST(ListNode* head) {47         return createBST(head, 0, getLen(head) - 1);                        48     }49 };

 

转载于:https://www.cnblogs.com/-wang-cheng/p/5006365.html

你可能感兴趣的文章
[转]MVC4项目中验证用户登录一个特性就搞定
查看>>
用Perl编写Apache模块续二 - SVN动态鉴权实现SVNAuth 禅道版
查看>>
Android 阴影,圆形的Button
查看>>
C++概述
查看>>
卡特兰数
查看>>
006_mac osx 应用跨屏幕
查看>>
nginx中配置文件的讲解
查看>>
MindNode使用
查看>>
HTTP库Axios
查看>>
CentOS7下安装python-pip
查看>>
认知计算 Cognitive Computing
查看>>
左手坐标系和右手坐标系 ZZ
查看>>
陀螺仪主要性能指标
查看>>
Linux 目录结构和常用命令
查看>>
Linux内存管理之mmap详解 (可用于android底层内存调试)
查看>>
Android开发中ViewStub的应用方法
查看>>
gen already exists but is not a source folder. Convert to a source folder or rename it 的解决办法...
查看>>
遍历Map的四种方法
查看>>
Altium Designer 小记
查看>>
【Linux高级驱动】I2C驱动框架分析
查看>>