面試題七 重建二叉樹

2022-06-10 05:03:06 字數 809 閱讀 4266

輸入某二叉樹的前序遍歷和中序遍歷結果,請重建二叉樹,假設不含重複數字

分析:前序遍歷中的根節點在序列的第乙個,根節點在中序遍歷結果序列中可以將左右子樹分開

binarytreenode construct( int a[ ] , int

b[ ])

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...