在電腦科學中,二叉樹是每個結點最多有兩棵子樹的有序樹。通常子樹的根被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。二叉樹常被用作二叉查詢樹和二叉堆或是二叉排序樹。
特點:1、每個節點最多有兩棵子樹,所以二叉樹中不存在度大於2的節點。
2、即使樹中某節點只有一棵子樹,也要區分是左子樹還是右子樹。
定義:1、滿二叉樹:所有的分支節點都存在左子樹和右子樹,並且所有的葉子結點都在同一層。
2、完全二叉樹:對二叉樹編號,如果編號為i(小於樹的節點數)的節點與同樣深度的滿二叉樹編號為i的節點位置相同,則這棵樹為完全二叉樹。
性質:1、在二叉樹第i層上至多有2的(i-1)次個節點(i >0)。
2、深度為k的二叉樹至多有2的k次減1個節點(k>0)。
3、對任意一棵二叉樹,如果其終端節點數為n0,度為2的節點數為n2,則n0=n2+1。
4、具有n個節點的完全二叉樹的深度為[log2n
]+1。
二叉樹的結構
typedef struct btnode
btnode, *binarytree;
基本操作:
btnode * buynode() //建立節點
btnode * createtree1() //建立二叉樹
return s;
}btnode * findvalue(btnode *ptr, elemtype x) //查詢結點
return p;}}
bool equal(btnode *pa, btnode *pb) //判斷兩顆二叉樹相等
int size(btnode *ptr)
//二叉樹節點數}
int sizeleaf(btnode *ptr)
//計算葉子節點數}}
二叉樹基本操作
tree.h ifndef tree h define tree h include typedef int element 定義二叉樹 typedef struct nodetreenode void preorder treenode root 遞迴前序遍歷 void inorder treen...
二叉樹基本操作
一.二叉樹的定義 二.二叉樹的建立 定義一棵無資料的二叉樹 6 int left size 7 int right size 為了操作簡便,我們定義一棵不需要儲存資料的二叉樹,只要能儲存節點之間的邏輯關係就行,所以用兩個陣列來表示。left i 第i個節點的左子節點的序號 right i 第i個節點...
二叉樹基本操作
include include define maxsize 100 typedef char elemtype typedef struct node btnode void createbtnode btnode b,char str 由str串建立二叉鏈 j ch str j btnode f...