Convert Sorted Array to Binary Search Tree - leetcode

Convert Sorted Array to Binary Search Tree
  My Submissions

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.


思路: 利用数组有序,然后二分建立二叉查找树


#include <iostream>
#include <vector>

using namespace std;


//Definition for binary tree
struct TreeNode {
	int val;
	TreeNode *left;
	TreeNode *right;
	TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

class Solution {
	public :
		TreeNode *sortedArrayToBST(vector<int> &num) {
	        // Note: The Solution object is instantiated only once and is reused by each test case.
			if (num.empty ())
				return NULL;
			return createTree (num, 0, num.size()-1);		
		}
		TreeNode * createTree (const vector <int> & num, int lhs, int rhs ) {
			if (lhs > rhs )
				return NULL;
			int mid = lhs + ((rhs - lhs) >> 1);
			TreeNode * node = new TreeNode (num.at(mid));
			node->left = createTree (num, lhs, mid - 1);
			node->right = createTree (num, mid + 1, rhs);
			return node;
		}
		void delTree (TreeNode * tree) {
			if (tree == NULL)
				return ;
			delTree (tree->left);
			delTree (tree->right);
			cout << "delete : " << tree->val << endl;
			delete tree;
			tree = NULL;
		}
		void inOrder (TreeNode * p) {
			if (p) {
				inOrder (p->left);
				cout << "traverse : " << p->val << endl;;
				inOrder (p->right);
			}
		}
};

int main () {
	Solution s;
	int  a[] = {1, 2, 3, 4, 5, 6};

	vector<int> v (a, a + sizeof(a) / sizeof (a[0]));

	TreeNode * tree = s.sortedArrayToBST (v);
		
	s.inOrder (tree);

	s.delTree (tree);

	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值