面試題7 重建二叉樹

2021-10-02 06:36:50 字數 1302 閱讀 6006

#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...