前序遍歷和中序遍歷樹構造二叉樹
根據前序遍歷和中序遍歷樹構造二叉樹
樣例:
給出中序遍歷:[1,2,3]和前序遍歷:[2,1,3]. 返回如下的樹:
2
/ \
1 3
我們知道前序遍歷是中->左->右,中序遍歷是左->中->右。因此根據前序遍歷的第一個數,即為根節點,我們可以在中序遍歷中找到根節點的左子樹和右子樹,同樣遞歸在左子樹中找到左子樹的根節點和其左右子樹,對右子樹也一樣。這樣理清思路後代碼就不難寫出來了。
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { /** [email protected]
前序遍歷和中序遍歷樹構造二叉樹