Example #1
0
int main(int argc, char* argv[]) {
    struct node* a = buildBSTree();
    struct node* b = buildBSTree();
    
    if (sameTree(a, b)) {
	printf("match\n");
    } else {
	printf("no match\n");
    }
}
Example #2
0
struct TreeNode *buildBSTree(int *nums, int numsSize) {
    if (nums == NULL || numsSize <= 0) {
        return NULL;
    }
    int idx = numsSize / 2; // prefer this one, left compact
    // int idx = (numsSize - 1) / 2; // to match leetcode's result
    struct TreeNode *n = malloc(sizeof(struct TreeNode));
    n->val = nums[idx];
    n->left = buildBSTree(nums, idx);
    n->right = buildBSTree(nums + idx + 1, numsSize - idx - 1);
    return n;
}
Example #3
0
// This is bad performance, keep same formal as ar2tree.108.c
struct TreeNode *buildBSTree(struct ListNode *head, int len) {
    if (head == NULL || len == 0) {
        return NULL;
    }
    int idx = len / 2; // prefer this one, left compact
    // int idx = (numsSize - 1) / 2; // to match leetcode's result
    struct TreeNode *n = malloc(sizeof(struct TreeNode));
    struct ListNode *ln = list_index(head, idx);
    n->val = ln->val;
    n->left = buildBSTree(head, idx);
    n->right = buildBSTree(ln->next, len - idx - 1);
    return n;
}
Example #4
0
struct TreeNode *sortedArrayToBST(int *nums, int numsSize) {
    return buildBSTree(nums, numsSize);
}
Example #5
0
int main(int argc, char* argv[]) {
    struct node* root = buildBSTree();
    printPostorder(root);
}
Example #6
0
struct TreeNode *sortedListToBST(struct ListNode *head) {
    int len = list_length(head);
    return buildBSTree(head, len);
}