用檔案建立一顆二叉樹

2021-09-07 20:02:10 字數 1628 閱讀 1539

本次使用到的類有:

fstream類

string類

#include"fstream"

#include"string"

首先建立乙個txt文字:

這代表了一棵二叉樹(如圖)

三個符號分別對應:資料、左孩子、右孩子(存在為1,不存在為0)

於是需要兩個函式。第乙個把檔案轉化為陣列,第二個把陣列轉化為二叉樹

在這裡,我使用了結構體。

struct node

;

然後進行轉化:

node* bitree:

:read_file

(string file_name)

//string串定義了乙個字串,這個字串用來記錄檔案的路徑

node *s =

newnode

[line]

;//length = line;

//注意!!!這裡需要記錄行數,在後面將陣列轉化為二叉樹的時候尤其重要,可以「引用」或者「定義乙個全域性變數」!!!

input.

clear()

; input.

seekg(0

,ios:

:beg)

;//這兩部操作讓檔案的指標重新回到開頭,因為剛剛在求行數的時候已經讓檔案指標遍歷到了尾部

for(int i =

0; i < line; i++

)//讀取檔案

input.

close()

;//關閉檔案

return s;

}

首先,定義乙個節點

struct binode

;

void bitree:

:creatbitree1

(node * s,binode*&bt

)if(s[h]

.number2 ==1)

}}

void bitree:

:creatbitree_file

(string file_name, binode *

& root)

需要注意的地方,這裡需要引入全域性變數templength即在定義bitree類public裡面宣告一下。

程式設計練習之一顆二叉樹包含另一顆二叉樹

劍指offer上的一道程式設計練習,如何確定二叉樹a包含一棵相對小一點的二叉樹b?思路 用兩個函式實現,第乙個首先判斷根結點是否相等,第二個函式繼續判斷子結構是否相等 函式一 第一步,首先從根結點入手,判斷proota的值是否與prootb的根結點的值是否相等。若相等,則在比較a樹的子結構是否包含b...

判斷一顆二叉樹是否是平衡二叉樹

方法一,參考 template typename t intdepthtree bstreenode pbs template typename t bool isbalancetree bstreenode pbs intdepthleft depthtree pbs left intdepthr...

判斷一顆二叉樹是否為對稱二叉樹

本題源自劍指offer 可以自定以一種對稱前序遍歷,即先遍歷父節點,再訪問右子節點,在訪問左子節點,null節點也訪問,將得到的序列和前序遍歷比較,相同就說明二叉樹是對稱的。遞迴 bool issymmetrical treenode proot bool issymmetricalcore tre...