劍指offer p7重建二叉樹

2021-09-27 11:59:25 字數 600 閱讀 7524

分析:前序是根左右,中序是左根右,因此每次通過前序序列的第乙個元素確定根節點,然後尋找終須中該節點所在的下標,將中序序列拆分成左右兩半,分別對應左右子樹,然後利用左右子樹的長度又可以把前序序列分成兩半,因此進行下一次遞迴。

注意到,i是中序中該結點所在的下標,那麼i-prei就可以得到左子樹的長度,那麼右子樹的長度就是endi-i。

/**

* definition for binary tree

* struct treenode

* };

*/class solution

treenode* createtree(vectorpre,vectorvin,int prep,int endp,int prei,int endi)

node->left = createtree(pre,vin,prep+1,prep+i-prei,prei,i-1);

node->right = createtree(pre,vin,prep+i-prei+1,endp,i+1,endi);

return node;

}else

}};

劍指 7 重建二叉樹

題目描述 演算法分析 提交 class solution treenode reconstructbinarytreecore vector iterator start pre,vector iterator end pre,vector iterator start vin,vector ite...

劍指offer 樹 7 重建二叉樹

使用雜湊表map記錄中序遍歷每個元素的位置 利用性質 1.先序遍歷的第乙個節點是根節點 2.中序遍歷的根節點的左邊是左子樹,右邊是右子樹 假設左子樹的中序遍歷的長度是len,在前序遍歷中,根節點後面len個數,是左子樹的前序遍歷,剩下的數是右子樹的前序遍歷 根據左右子樹的前序遍歷和中序遍歷,我們先遞...

劍指04 重建二叉樹

劍指04 重建二叉樹 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。示例1輸入 1,2,3,4,5,6,7 3,2,4,1,6,5,7 返回值解法 definition...