利用前序和中序遍歷序列構造二叉樹

2021-09-02 14:25:11 字數 825 閱讀 3239

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

基本思路:

因為前序遍歷的第乙個結點就是根結點,所以根結點確定,然後我們要確定左右子樹。通過遍歷在中序遍歷序列中找到根結點的位置,下圖三角形的位置,找到根結點位置後,中序遍歷陣列根結點前面的數就位於左子樹中,右邊的數就位於右子樹中。**中,s,e代表左子樹前序遍歷的起始位置,m,n代表右子樹中序遍歷的起始位置。然後根據位置資訊遞迴構建左右子樹。就如圖中所示,我們首先在中序遍歷序列中找到根結點1的位置,那麼4 7 2就是1的左子樹中的結點,5 3 8 6就是1的右子樹結點。然後我們可以確定左子樹的前序遍歷序列為2,4,7,中序遍歷序列為4,7,2,把這個子陣列當成乙個整體構建一顆樹,那麼1的左子樹就構建成功了,右子樹同理。

int leftlength=indexh-m; //確定左子樹陣列的長度

int rightlength=n-indexh; //確定右子樹陣列的長度

if(indexh==m)else

if(indexh==n)else

return h;

}public treenode reconstructbinarytree(int pre,int in)

}

利用前序遍歷和中序遍歷構造二叉樹

根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 920 157 思想 利用分治的思想來解決該題 具體解題步驟 1.根據先序遍歷,我們可...

根據前序遍歷序列和中序遍歷序列構造二叉樹演算法

乙個前序遍歷序列和乙個中序遍歷序列可以確定一顆唯一的二叉樹。根據前序遍歷的特點,知前序序列 presequence 的首個元素 presequence 0 為二叉樹的根 root 然後在中序序列 insequence 中查詢此根 root 根據中序遍歷特點,知在查詢到的根 root 前邊的序列為根的...

前序遍歷序列和中序遍歷序列構造二叉樹演算法

前序,中序遍歷,在此就不向大家向下說明了,如有不懂請先理解,再來看此篇文章。當我們拿到前序和中序時,如何重新構建一顆新的數呢?首先,大家都知道的,由中序遍歷序列可知,第乙個節點是根節點,其次,由前序遍歷序列可知,第乙個節點是根節點的左子樹節點,而且前序遍歷中,根節點左邊是左子樹,右邊是右子樹,因此通...