problem
solution
preorder[l]
為根節點,並從inorder[l:r]
找到該節點,並用此節點切割,左半部為此節點的左子樹,右半部為此節點的右子樹,並遞迴下去。
root->left = build(preorder, pl+1, pl +idx-il, inorder, il, idx-1 );
為什麼不是pl+1+idx-1-il+1
? 因為idx-1-il+1
是從跟節點開始計算offset,已包含 從pl開始找起的offset 所以不需再加一。
1 | class Solution { |
analysis
- time complexity
O(n^2)
- space complexity
O(n^2)
n is node number