資料結構與演算法 二叉樹

2021-10-08 06:59:48 字數 1496 閱讀 4855

----------------------------學習資料結構第三天-------------------------------

前言:今天學習一下二叉樹,以前沒學的時候就感覺這個資料結構是個神奇的結構,一生二,二生四。。。對這個資料結構總是抱有莫大的好奇,今天終於學到了,感覺這個資料結構是非常奇妙的。

今天學習的內容是:1.二叉樹的定義與建立 2.前序遍歷 3.中序遍歷 4.後序遍歷 4.節點多少 5.樹的深度 6.銷毀二叉樹

總結

1.二叉樹的建立要用二級指標,我對這個為啥要用二級指標的原因也是一知半解,先暫時記住,以後用多了,就會慢慢理解吧。

2.前中後序遍歷,這個前中後指的是雙親的位置,並且左右兒子的順序總是左兒子在前,右兒子在後。例如前序遍歷的順序就是:雙親 左兒子 右兒子,其它兩個也是如此。

3.銷毀時,要判斷節點的位址是否為空,然後free的也是節點的位址。

4.改變二叉樹構造的話就要用二級指標,如果僅僅是查詢值之類的一級指標即可。

#include

#include

typedef

int telemtype;

typedef

struct bitnode

bitnode,

*bitree;

intmax

(int a,

int b)

//建立二叉樹是按前序遍歷建立的

void

createtree

(bitree *t)

*t=(bitnode *

)malloc

(sizeof

(bitnode));

if(!t)printf

("建立失敗!\n");

(*t)

->data = data;

//給節點賦值

//遞迴建立左右子樹分支

createtree(&

((*t)->lchild));

createtree(&

((*t)->rchild));

}//前序遍歷

void

preprint

(bitree t)

//中序遍歷

void

midprint

(bitree t)

//後序遍歷

void

backprint

(bitree t)

//返回二叉樹的深度

intbitree_depth

(bitree t)

}//返回二叉樹的節點數

intnode_count

(bitree t)

//t是節點的位址的位址,*t才是節點的位址

void

destroy

(bitree *t)

}int

main()

演算法與資料結構 二叉樹

二叉樹 binary tree 二分樹 二元樹 二叉樹的遞迴定義 或是空樹,或是一棵由乙個根結點和左右子樹組成的樹,且左右子樹也是二叉樹。分枝結點 除葉結點以外的結點。二叉樹的性質 最多 2 h 1 個結點 n2 n0 1 滿二叉樹 所有分枝結點都存在左右子樹,且葉結點都在同一層。完全二叉樹 除最後...

資料結構與演算法 二叉樹

1.普通二叉樹 treenode package math public class treenode public void setdata int data public treenode getlchild public void setlchild treenode lchild publi...

資料結構與演算法 二叉樹

二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 性質1 在二叉樹的第i層上至多有2 i 1 個結點 i 0 性質2 深度為k的二叉樹至多有2 k 1個結點 k 0 性質3 對於任意一棵二叉樹,如果其葉結點數為n0,而度...