二叉樹的基本操作

2021-08-08 16:23:03 字數 944 閱讀 8244

在電腦科學中,二叉樹是每個結點最多有兩棵子樹的有序樹。通常子樹的根被稱作「左子樹」(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...