之前有篇文章概要的敘述了一下關於二叉樹的建立,參考博文二叉樹的c語言建立但是很不全面,這篇文章就讓我們來好好**一下關於二叉樹的建立吧~
首先,我們要做一些前期準備,有關於本課二叉樹的結點資訊和如何購買乙個結點
結點資訊
typedef char elemtype;
#define end '#'
typedef struct btnode
btnode, *binarytree;
新建乙個結點
struct btnode* buynode()
首先關於二叉樹的建立,我們知道最簡單的遞迴方法
方式一:
在這兒,我們講述乙個錯誤的建立方法,大家注意
struct btnode* creaettree2(const char *str)
return s;
}
這樣建立的二叉樹為
我們可以用層次分析法來解釋一下,當結點a建立完畢;再建立其左子樹的時候進入過後str+1為結點b,建立右子樹傳入的引數還是str :a。以此類推…
如果將str+1 改為str++,也不正確,構建出來的二叉樹為下圖:
方式二:
struct btnode* creaettree3(const char*& str)
return s;
}
在解釋上述過程的時候,我們要引入乙個關於指標和引用的概念。
引用的本質:語法糖(邏輯上很簡單,將複雜的過程交給編譯器,但是看起來很好理解)所以從邏輯和語法上來看就沒有占有空間,但是編譯過後的機器上面來看相當於指標所以是占用空間的
從上述**中我們可以清晰的看出引用的使用方法,c在底層實質上就是乙個自身為常性的指標。下面我們再來看乙個引用邏輯和底層的對比
有了上述關於引用的了解,我們對這種方式的二叉樹遍歷就有了乙個更為清楚的認識了想比於上述錯誤的做法,這樣每次遞迴傳入的值都是做了相應的改變的。
方式三:二級指標的做法
struct btnode* creaettree4(const char** const pstr)
return s;
}
主方法:
int main()
資料結構 建立二叉樹
include include define max 100 using namespace std typedef struct bnode bnode,btree btree q max btree creatree 層次輸入 rear q rear s if rear 1 root s els...
資料結構 樹(二叉樹)詳解
結構示意圖 樹的常用術語 結合示意圖理解 節點 abcd這些都是節點 根節點 沒有父節點,a就是根節點 父節點 相對而言,a是b和c的父節點 子節點 反之,b和c就是a的子節點 葉子節點 沒有子節點的節點 efgh就是葉子結點 節點的風 節點值 路徑 從root節點找到該節點的路線 a到h的路徑就是...
資料結構(二叉樹) 二叉樹的建立 儲存 遍歷
建立二叉樹,並通過呼叫函式,輸出先序遍歷 中序遍歷與後序遍歷的結果 include include define true 1 define false 0 define ok 1 define error 0 datatype 是二叉樹資料元素型別,此程式定義為char型 typedef char...