劍指offer 樹 7 重建二叉樹

2022-08-13 07:15:18 字數 661 閱讀 1286

使用雜湊表map記錄中序遍歷每個元素的位置

利用性質:

1. 先序遍歷的第乙個節點是根節點

2. 中序遍歷的根節點的左邊是左子樹,右邊是右子樹

假設左子樹的中序遍歷的長度是len,在前序遍歷中,根節點後面len個數,是左子樹的前序遍歷,剩下的數是右子樹的前序遍歷;

根據左右子樹的前序遍歷和中序遍歷,我們先遞迴建立出左右子樹,再遞迴建立根節點。

容易出錯的點:len,下標表示範圍, 如果k為中序遍歷中根節點的位置,那麼len = k - il,

左子樹前序遍歷的範圍(pl + 1, pl + 1 + k - il - 1)右子樹前序遍歷的範圍為(il, k - 1) k本身就是根節點的在中序遍歷的位置

右子樹前序遍歷的範圍(pl + k - il + 1, pr)右子樹前序遍歷的範圍為(k + 1, ir) k本身就是根節點的在中序遍歷的位置

時間複雜度為o(n)

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

treenode* dfs(int pl, int pr, int il, int ir)

};

劍指 7 重建二叉樹

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

劍指offer7 重建二叉樹

輸入一棵二叉樹前序遍歷和中序遍歷的結果,請重建該二叉樹。注意 二叉樹中每個節點的值都互不相同 輸入的前序遍歷和中序遍歷一定合法 樣例 給定 前序遍歷是 3,9,20,15,7 中序遍歷是 9,3,15,20,7 返回 3,9,20,null,null,15,7,null,null,null,null...

劍指offer7 重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並輸出它的頭節點。根據先序序列第乙個數確定樹的根節點,在中序序列中找到這個數所在的位置,此處左邊為左子樹,右邊為右子樹,根據遞迴建立二叉樹。...