劍指Offer 面試題6 重建二叉樹

2021-07-22 21:17:16 字數 1049 閱讀 4737

題目:輸入某二叉樹的連續遍歷和後序遍歷結果,請重建此二叉樹.輸出它的頭結點.(假設輸入的前序遍歷和後序遍歷結果中都不含重複數字)

分析:

**:

public

class

solution

/*** 構造出二叉樹的方法

* *@param pre

* 子樹的前序遍歷陣列

*@param startpre

* 子樹的前序遍歷陣列第乙個數在pre陣列中的索引

*@param endpre

* 子樹前序遍歷陣列最後乙個數在pre陣列中的索引

*@param in

* 子樹的中序遍歷陣列

*@param startin

* 子樹的中序遍歷陣列第乙個數在pre陣列中的索引

*@param endin

* 子樹中序遍歷陣列最後乙個數在pre陣列中的索引

*@return root 根節點

*/private treenode reconstructbinarytree(int pre, int startpre, int endpre,

int in, int startin, int endin)

return root;

}}

難點:遞迴函式的引數是本題目的乙個難點,要分析出

root.left = reconstructbinarytree(pre, startpre + 1, startpre + i - startin, in, startin, i - 1);

root.right = reconstructbinarytree(pre, startpre+(i-startin)+1, endpre, in, i + 1, endin);

}

確實不是一件容易的事情.

劍指offer 面試題6 重建二叉樹

題目 輸入某二叉樹的前序遍歷和中序遍歷,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含有重複的數字。例如,前序遍歷序列 1,2,4,7,3,5,6,8 中序遍歷序列 4,7,2,1,5,3,8,6 則重建出的二叉樹如下所示,並輸出它的頭結點1。基本思想 前序遍歷 前序遍歷首先訪問根結點...

劍指offer《面試題6 重建二叉樹》

題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建出下圖所示的二叉樹並輸出它的頭結點。1 2 3 4 5 6 7 8 劍指offer 名企面試官精講典型程式設計題 著作權所有者 何海濤 inc...

劍指offer 面試題6重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。重建出二叉樹,並輸出根節點。二叉樹的定義如下 如上,前序遍歷 1,2,4,7,3,5,6,8,中序 4,7,2,1,5,3,8,6,後序遍歷 7,4,2,5,8,6,3,1 在二叉樹的前序...