題目、重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並輸出它的頭節點。二叉樹節點的定義如下:
struct binarytreenode
分析前序遍歷序列的第乙個數字1就是根節點的值。掃瞄中序遍歷序列,就能確定根節點的值的位置。根據中序遍歷的特點,在根節點的值1前面的3個數字都是左子樹節點的值,位於1後面的數字都是右子樹節點的值。
由於在中序遍歷序列中,有3個數字是左子樹節點的值,因此左子樹公有3個左子節點。同樣,在前序遍歷序列中,根節點後面的3個數字就是3個左子樹節點的值,再後面的所有數字都是右子樹節點的值。這樣我們就在前序遍歷序列和中序遍歷序列中分別找到了左子樹、右子樹對應的子串行。以此類推,接下來可以用遞迴的方法去完成。
完整**
public
class
buildtree
;//前序遍歷序列
int[
] in =
;//中序遍歷序列
//返回後序遍歷結果
treenode t = c.
construct
(pre,in)
; system.out.
println
("後序遍歷結果為:");
c.lastorder
(t);
}//通過前序和中序遍歷序列重建二叉樹
public treenode construct
(int
pre,
int[
] in)
if(pre.length ==
0||in.length ==0)
if(pre.length != in.length)
treenode root =
newtreenode
(pre[0]
);//根節點為前序遍歷的第乙個
for(
int i =
0;ireturn root;
}//後序遍歷結果 重建後的二叉樹後序遍歷方式輸出二叉樹
public
void
lastorder
(treenode t)}}
class
treenode
}
面試題7 重建二叉樹
對vector使用指標 include include include using namespace std int main vector seq 3 vector curr 0 for int j 0 j 3 j getchar struct treenode struct listnode ...
面試題7 重建二叉樹
一 題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建出圖2.6所示的二叉樹並輸出它的頭結點。二 關鍵 根據前序找根節點,從而在中序中找到左子樹對應的序列,右子樹對應的序列。三 解釋 四 i...
面試題7 重建二叉樹
面試題7 重建二叉樹 題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸 入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建出 圖所示的二叉樹並輸出它的頭結點。假裝有圖.jpg 1 2 3 4 5 6 7 8 在preorder inord...