convert sorted array to binary search tree

来源:互联网 发布:xss java 代码过滤 编辑:程序博客网 时间:2024/05/24 06:45
二叉树:


balance Tree:


对于每个节点,其左右子树的高度差不超过1(<=1)


BST tree:


对于 BST Tree,对于每个父节点,其左子节点小于父节点


其右子节点大于父节点




Convert Sorted Array to Binary Search Tree


Given an array where elements are sorted in ascending order,


convert it to a height balanced BST.


#include <iostream>#include <vector>using namespace std;struct TreeNode{int val;TreeNode *l;TreeNode *r;TreeNode(int x) :val(x), l(nullptr), r(nullptr) {}};class Solution{public:TreeNode *SortarrayToBST(vector<int>& vec){         return StoBST(vec.begin(), vec.end());}template<typename sty> //sty是类型TreeNode *StoBST(sty left, sty right){auto length = distance(left, right);if (length <= 0) return nullptr;auto mid = left + length / 2;TreeNode *Root = new TreeNode(*mid);Root->l = StoBST(left, mid);Root->r = StoBST(mid + 1, right);return Root;}void midorder(TreeNode *Root) //中序遍历{if (Root != nullptr){midorder(Root->l);cout << Root->val<<",";midorder(Root->r);}}};int main(){Solution s1;vector<int> vec{ 1, 2, 3, 4, 5 };cout << "BST and Balance Tree:";s1.midorder(s1.SortarrayToBST(vec));cout << endl;system("pause");return 0;}


0 0
原创粉丝点击