輸入某二叉樹的前序遍歷和中序遍歷結果,請重建二叉樹,假設不含重複數字
分析:前序遍歷中的根節點在序列的第乙個,根節點在中序遍歷結果序列中可以將左右子樹分開
binarytreenode construct( int a[ ] , intb[ ])
binarytreenode constructcore(
int a[ ] ,int abe., int
aend,
int b[ ],int bbe, int
bend)
//在中序中尋找根節點的位置
int rootb=bbe;
while( bend>=rootb && b[rootb] !=root.value)
rootb++;
if( b[rootb] !=rootvalue && bend==rootb))
system.out.print( "輸入引數錯誤");
//確定前序陣列左右子樹區間
int llength=rootb-bbe;
int alend=abe+llength;
//構建左右子樹
if( llength>0)
root.l=constructcore( a,abe+1,alend,b,bbe,rootb-1) ;
if( llength abe)
root.r=constructcore( a,alend+1,aend,b,rootb+1,bend) ;
return
root;
}
劍指Offer面試題七重建二叉樹
劍指offer面試題 七 題目描述 輸入某個二叉樹的前序遍歷和中序遍歷結果,重建該二叉樹.例如輸入前序遍歷 1,2,4,7,3,5,6,8 和中序遍歷 4,7,2,1,5,3,8,6 則重建如下圖的二叉樹 1 23 456 78首先我們來看一下二叉樹的遍歷,所有前序遍歷的第乙個元素,一定是該二叉樹的...
面試題5 重建二叉樹
思路 先根據先序序列第乙個數建立根節點,然後再中序序列中找到根節點的位置,進而確定左右子樹的前序序列和後序序列,遞迴的構建左右子樹。c include stdafx.h include include using namespace std struct bitreenode bitreenode ...
面試題6 重建二叉樹
面試題6 題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,重建出該二叉樹。不包含重複數字。前序遍歷的第乙個結果就是根節點,中序遍歷中根節點前面的節點就是左子樹,後面的節點就是右子樹。然後遞迴的構建左右子樹。binarytreenode constructbinarynode int startpreo...