深度:層數。
度:子樹的數量。
葉子:沒有子節點的節點。
定義:每個節點至多有兩個子節點,且需要區分左孩子和右孩子。
滿二叉樹:深度為 k
kk 節點數量為 2k−
12^k-1
2k−1
的二叉樹。
完全二叉樹:只有最後兩層的節點可以不滿,且只有乙個子節點的節點,其子節點必為左孩子的二叉樹。
/*
* 二叉樹 如下
* a
* b c
* d e f g
* h …… …… …… …… …… ……
* 我們假設a的編號為1,b的編號為2,…………。則我們可以總結出來節點編號為n的節點,
*其左子樹的編號為2n,右子樹的編號為2n+1.通過這種方式,我們能夠通過順序結構儲存
*二叉樹。
* *優點:同順序表。
*缺點:空間利用率低,容易產生大量空閒空間;不能適用其他型別的樹。
* */
/*
* 構造節點結構體
* * struct _node_st
* * 使用這種節點構造二叉樹,如果沒有子節點,就將對應的指標指空。
* ** */
/*
* 二叉樹 如下
* a
* b c
* d e f
* g h i
* * */
abcdefghi
遍歷順序:根節點–>左子樹–>右子樹
a bdg cehi f
遍歷順序:左子樹–>根節點–>右子樹
b dg a hei c f
左子樹–>右子樹–>根節點
gd b hie f c a
main.c
#include
#include
#define namesize 32
typedef
struct score_st score;
struct score_st
;struct node_st
;void
print_s
(const
void
*record)
intinsert
(struct node_st *
*root, score *data)
node->data =
*data;
node->l =
null
; node->r =
null
;*root = node;
return0;
}if(data->id <=
(*root)
->data.id)
else
}score *
find
(struct node_st *root,
int id)
if(id == root->data.id)
if(id <= root->data.id)
else
}void
draw_
(struct node_st *root,
int level)
draw_
(root->r, level+1)
;for
(int i =
0; i < level; i++
)print_s
(&root->data)
;draw_
(root->l, level+1)
;}void
draw
(struct node_st *root)
intmain()
;int i;
struct node_st *tree =
null
; score tmp;
for(i =
0; i <
sizeof
(arr)
/sizeof
(*arr)
; i++
)#if 0
//find
int tmpid =2;
score *datap;
datap =
find
(tree, tmpid);if
(datap ==
null
)else
#endif
draw
(tree)
;return0;
}
C語言資料結構二叉樹簡單應用
c語言資料結構二叉樹簡單應用 在電腦科學中,二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 接下來我就在這裡給大家介紹一下二叉樹在演算法中的簡單使用 我們要完成總共有 1 二叉樹的建立 2 二叉樹的先中後序遞迴遍歷 3...
C語言 資料結構 二叉樹
一 樹的概念及結構 1.樹是一種非線性的資料結構,它是由n n 0 個有限結點組成乙個具有層次關係的集合。把它叫做樹是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點 每個結點有零個或多個子結點 沒有父結點的結點稱為根結點 每乙個非根結點有且只有乙個父結點 除了根結點外,...
資料結構 二叉樹(c語言)
一下 是二叉樹的相關 包括二叉樹的根據前序遍歷建立二叉樹。根據前序遍歷 中序遍歷與後續遍歷依次查詢二叉樹的各個節點。include 定義二叉樹節點資料型別 typedef struct bitnode bitnode,bitree bitree為指向bitnode這種結構的指標 前序構造二叉樹函式 ...