2023年8月4日 星期五

[173] Binary Search Tree Iterator

說真的,我到底在寫什麼啊 Orz

覺得自己卡住老半天的理由完全廢到笑.........

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/

typedef struct {
int val[100000];
int count;
int curr;
} BSTIterator;

void insert(struct TreeNode* root, int level, BSTIterator* obj)
{
if (root == NULL || obj == NULL)
return;

if (root->left != NULL)
insert(root->left,level+1, obj);

obj->val[(obj->count)++]= root->val;

if (root->right != NULL)
insert(root->right, level+1, obj);

return;
}

BSTIterator* bSTIteratorCreate(struct TreeNode* root) {
if (root == NULL)
return NULL;

BSTIterator* ptr = malloc (sizeof (BSTIterator));
ptr->count = 0;
ptr->curr = 0;
insert(root, 0, ptr);
return ptr;
}

int bSTIteratorNext(BSTIterator* obj) {
if (obj-> count>0)
return obj->val[(obj->curr)++];
return NULL;
}

bool bSTIteratorHasNext(BSTIterator* obj) {
return (obj->curr < obj-> count) ? true : false;
}

void bSTIteratorFree(BSTIterator* obj) {
free(obj);
return;
}

/**
* Your BSTIterator struct will be instantiated and called as such:
* BSTIterator* obj = bSTIteratorCreate(root);
* int param_1 = bSTIteratorNext(obj);
* bool param_2 = bSTIteratorHasNext(obj);
* bSTIteratorFree(obj);
*/

沒有留言:

張貼留言