面試題7 重建二叉樹

2021-10-02 19:56:13 字數 728 閱讀 9075

題目:給定乙個二叉樹的前序遍歷序列和中序遍歷序列,重構這棵二叉樹。

自己的思路:

1、看到樹應該想到的是遞迴,樹和遞迴基本是分不開的,那麼我們可以通過前序遍歷確定樹的根節點以及子樹的根節點,然後遍歷中序序列找到根節點,依據中序序列的特點,在根節點左邊的是左子樹,在根節點右邊的是右子樹。以此遞迴即可

實現**:

#include

#include

//#include

using

namespace std;

struct treenode

;const

int pre_order[8]

=;const

int in_order[8]

=;treenode *

buildtree

(int p_b,

int p_e,

int i_b,

int i_e)

} treenode *root =

new treenode;

root-

>data = pre_order[p_b];if

(p_b+

1< p_b+i - i_b)

if(p_b + i - i_b < p_e)

else

return root;

}treenode*

main()

面試題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...