根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意: 你可以假設樹中沒有重複的元素。
例如,給出
前序遍歷 preorder = [3,9,20,15,7
] 中序遍歷 inorder = [9,3,15,20,7
] 返回如下的二叉樹:
3 /\
920 /\
157
思想:利用分治的思想來解決該題
具體解題步驟:
1.根據先序遍歷,我們可以知道根節點就是給定陣列的第乙個元素pre[0],那麼我們就可以在中序遍歷中找出值等於pre[0]的位置,該位置的前半部分就是左子樹,右半部分就是右子樹,
2.重複1,直到遍歷完
實現**如下:
publicclass
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...