劍指offer Q07 重建二叉樹

2021-10-07 07:49:59 字數 814 閱讀 9554

這是第二遍刷題了

本題主要就是怎樣從乙個先序序列和乙個中序序列怎樣推導出一棵樹。首先,從先序可以得到root結點就是第乙個節點,然後到中序中去找其對應的位置inpos,然後該位置的左邊就是root的左子樹中序序列,右邊就是root的右子樹中序序列,且同時可以根inpos的位置計算出root的左子樹序列的結點個數,就是inpos-inleft=isize,然後可以推導出先序中其左子樹序列的位置在preleft+1到preleft+isize,而其先序中右子樹序列的位置在preleft+isize+1到preright。這樣,通過不斷的遞迴,每次遞迴,構建root結點,且它的左孩子就是下一層遞迴,右孩子也是。

/**

* definition for a binary tree node.

* public class treenode

* }*/class solution

public treenode build(int preorder,int pleft,int pright,int inorder,int inleft,int inright)

}int size=inpos-inleft;

treenode p=new treenode(preorder[pleft]);

p.left=build(preorder,pleft+1,pleft+size,inorder,inleft,inpos-1);

p.right=build(preorder,pleft+size+1,pright,inorder,inpos+1,inright);

return p;

}}

劍指offer07 重建二叉樹

這是乙個非常高頻的面試題。題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例子 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 思路 題目給出了前序和中序遍歷,我們可以知道前序的...

劍指 Offer 07 重建二叉樹

難度 中等 題目描述 解題思路 這道題之前做過,但是忘得乾乾淨淨了。現在再做一遍撿一撿,說不定哪次面試就出到了呢 總體思想就是遞迴,用雜湊表來儲存對應的中序遍歷的下標,空間換時間,免得每次都要去遍歷找下標。然後每次遞迴的時候,要給對應的左子樹和右子樹在對應陣列裡的下標,左端點大於右端點的時候返回空。...

劍指 Offer 07 重建二叉樹

首先要懂得前序遍歷和中序遍歷,可以寫出兩個陣列,自己手動來重建一下二叉樹,來看看重建二叉樹是怎麼乙個流程。以圖中給出的二叉樹為例,根據前序遍歷的特點,可知前序遍歷的首尾數字是根節點,比如這個時候根節點數值為3,可以在中序遍歷中第2個位置找到數值3,在3左邊的9為3的左子樹,右邊的15,20,7為右子...