2023年7月8日 星期六

[105] Construct Binary Tree from Preorder and Inorder Traversal

啊~我到底寫了什麼 Orz

給一個 inorder 跟 preorder ,把它們的binary tree 做出來
怎麼拿摸難!!!!!!
沒看解答完全不會寫(攤手)
糟了一個糕

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

int find(int* inorder, int inorderSize, int root)
{
int index=0;
for (int i=0;i<inorderSize;i++)
{
if (inorder[i]==root)
return i;
}
return -1;
}

struct TreeNode* buildTree(int* preorder, int preorderSize, int* inorder, int inorderSize){
if (preorderSize<=0 || inorderSize <=0)
return NULL;

struct TreeNode *root = malloc (sizeof (struct TreeNode));
root->val = preorder[0];

int rootIndex = find(inorder, inorderSize, preorder[0]);

root->left = buildTree(preorder+1, rootIndex, inorder, rootIndex);
root->right = buildTree(preorder+rootIndex+1, inorderSize - rootIndex - 1, inorder+rootIndex+1, inorderSize - rootIndex - 1);
return root;
}

沒有留言:

張貼留言