面試題7:重建二叉樹
題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建出的二叉樹並輸出它的頭結點。
/*** 通過先序+中序構建出樹
*/binarytreenode*
create
(int prel,
int prer,
int inl,
int inr)
int numofleft = k-inl;
// 左子樹的結點個數
root-
>left =
create
(prel+
1, prel+numofleft, inl, k-1)
; root-
>right =
create
(prel+numofleft+
1, prer, k+
1, inr)
;return root;
}int
main()
改編:通過中序和後序構建出樹
#include
#include
using
namespace std;
const
int maxn=50;
struct binarytreenode
;int pre[maxn]
, in[maxn]
=, post[maxn]=;
/*** 通過先中序+後序構建出樹
*/binarytreenode*
create
(int inl,
int inr,
int postl,
int postr)
int numofleft = k-inl;
// 左子樹的結點個數
root-
>left =
create
(inl, k-
1, postl, postl+numofleft-1)
; root-
>right =
create
(k+1
, inr, postl+numofleft, postr-1)
;return root;
}int
main()
劍指offer面試題7 重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。class solution struct treenode reconstruct int l1,int r1,int l2 pr...
劍指Offer 面試題7 重建二叉樹
題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹,假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,輸入前序遍歷序列和中序遍歷,則重建如圖2.6所示的二叉樹並輸出它的頭節點。分析 前序遍歷 先根,再左,後右 中序遍歷 先左,再根,後右。那麼前序遍歷的第乙個是根,在中序遍歷中找到...
劍指offer 面試題7 重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建出二叉樹並輸出他的根節點。二叉樹的定義如下 public static class binarytreenode 在二叉樹的前序遍歷中,第乙個數字總...