#include
using std::endl;
using std::cout;
using std::cin;
struct binarytreenode
;binarytreenode*
constructcore
(int
* startpreorder,
int* endpreorder,
int* startinorder,
int* endinorder)
int* rootinorder = startinorder;
//在中序中找到根節點位置
while
(rootinorder <= endinorder &&
*rootinorder != rootvalue)
++rootinorder;
if(rootinorder == endinorder &&
*rootinorder != rootvalue)
//當中序沒有前序中的節點時,丟擲異常
throw std::
exception
("invalid input");
int leftlength = rootinorder - startinorder;
//左子樹的長度
int* leftpreorderend = startpreorder + leftlength;
//左子樹的終止位置
if(leftlength >0)
//構建左子樹
if(leftlength < endinorder - startinorder)
//構建右子樹
return root;
}binarytreenode*
construct
(int
* preorder,
int* inorder,
int length)
void
printftree
(binarytreenode* root)
}int
main()
;int inorder[8]
=;binarytreenode*root=
construct
(preorder, inorder,8)
;printftree
(root)
; cin.
get();
cin.
get();
return0;
}
面試題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...