劍指Offer 面試題7 重建二叉樹

2021-10-02 17:57:39 字數 1487 閱讀 8218

面試題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 在二叉樹的前序遍歷中,第乙個數字總...