重建二叉樹python 資料結構 重建二叉樹

2021-10-12 12:03:32 字數 607 閱讀 6317

說明:

給定輸入一棵二叉樹的前序遍歷和中序遍歷陣列。利用此重新建立二叉樹。注意輸入不包含相同的鍵值,否則情況複雜得多。

思路:由定義,前序遍歷的第乙個記錄總是根節點,而這個鍵值在中序遍歷時,將中序遍歷的陣列分成兩部分,分別對應這個根節點的左右兩子樹。同時,前序遍歷陣列跟在節點後的陣列也分成兩部分,其中前面對應左子樹的前序遍歷,後面部分對應右子樹的前序遍歷。

於是,我們聯想到分治法,利用遞迴,每次找到根節點,然後利用乙個定位函式在中序遍歷陣列中找到位置劃分,再將新的劃分重新劃分兩個陣列,並遞迴進行建立二叉樹。

**例項:

#include

using namespace std;

typedef struct nodednode;

int find(int key, int *start, int endloc);

int in = ;

dnode *p = null;

p = creat(pre, in, 7);

display(p);

總結:這裡需要說明的問題是在進行判斷陣列輸入時,需要做一些對於非法輸入的處理。這裡給的**並未包含這部分。

但是實際應用時務必要注意。否則程式必然不穩定。

Python 二叉樹資料結構

二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 將二叉樹的節點定義為乙個物件,節點之間通過類似鍊錶的鏈結方式來連線。二叉樹的遍歷方式 前序遍歷 eacbdgf 中序遍歷 abcdegf 後序遍歷 bdcafge 層次遍...

Python重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列 1,2,4,7,3,5,6,8 和中序遍歷序列 4,7,2,1,5,3,8,6 則重建二叉樹並返回。coding utf 8 class treenode def i...

Python 重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。class treenode def init self,x self.val x self.next none class so...