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

2022-05-07 11:12:09 字數 643 閱讀 6753

根據一棵樹的前序遍歷與中序遍歷構造二叉樹。

注意: 你可以假設樹中沒有重複的元素。

例如,給出

前序遍歷 preorder = [3,9,20,15,7

] 中序遍歷 inorder = [9,3,15,20,7

] 返回如下的二叉樹:

3 /\

920 /\

157

思想:利用分治的思想來解決該題

具體解題步驟:

1.根據先序遍歷,我們可以知道根節點就是給定陣列的第乙個元素pre[0],那麼我們就可以在中序遍歷中找出值等於pre[0]的位置,該位置的前半部分就是左子樹,右半部分就是右子樹,

2.重複1,直到遍歷完

實現**如下:

public

class

solution

return -1

; }

public treenode buildtreechild(int preorder, int inorder, int inbegin,int

inend)

public treenode buildtree(int preorder, int

inorder)

}

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

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。基本思路 因為前序遍歷的第乙個結點就是根結點,所以根結點確定,然後我們要確定左右子樹。通過遍歷在中序遍歷序列中找到根結點的位置,下圖...

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

我們考慮一種簡單的情況,現在假定有這樣一顆二叉樹 顯然其前序遍歷和中序遍歷分別為 int preorder int midorder 我們可以再根據前序遍歷和中序遍歷還原這個二叉樹,其原理為 前序遍歷總是按照根節點 左子樹 右子樹的順序遍歷,中序遍歷總是按照左子樹 根節點 右子樹的順序遍歷,因此在初...

根據前序遍歷和中序遍歷樹構造二叉樹

根據前序遍歷和中序遍歷樹構造二叉樹.樣例給出中序遍歷 1,2,3 和前序遍歷 2,1,3 返回如下的樹 2 1 3 假設樹中不存在相同數值的節點 definition of treenode class treenode class solution treenode helper vector p...