TreeNode* constructBST(vector<int>& num, int l, int r) { TreeNode* node = 0; int m = 0; if (l <= r) { m = (l + r) >> 1; node = new TreeNode(num[m]); node->left = constructBST(num, l, m - 1); node->right = constructBST(num, m + 1, r); }
/* * test case * */ TEST(sortedSLL2BBST_Test, Positive01){ Solution s; ListNode *head = constructSLL(); TreeNode *result = s.sortedSLL2BBST(head); TreeNode *expected = constructBST(); EXPECT_TRUE(assertBST(expected, result)); deleteBST(expected); deleteBST(result); deleteSLL(head); }
int main() { Node* root = NULL; constructBST(root, 3); constructBST(root, 2); constructBST(root, 1); constructBST(root, 4); constructBST(root, 0); printf("in order traverse the BST:\n"); inOrderTraverse(root); printf("------------------\n"); int maxDep = maxDepth(root); printf("maxDep : %d\n", maxDep); printf("------------------\n"); getLongest(root); printf("longest : %d\n", longest); return 0; }
TEST(sortedArray2BBST_Test, Positive01){ Solution s; int arr[] = {1, 2, 3, 4, 5, 6, 7}; vector<int> num(arr, arr + sizeof(arr) / sizeof(int)); TreeNode *result = s.sortedArray2BBST(num); TreeNode *expected = constructBST(); EXPECT_TRUE(assertBST(expected, result)); deleteBST(expected); deleteBST(result); num.clear(); }