定義二叉樹結構
typedef
char btdatatype;
typedef
struct bintreenode
btnode,*pbtnode;
遵循某種次序,遍歷二叉樹中的所有節點,使得每個結點被訪問一
次,而且僅訪問一次。
「訪問」:即對結點施行某些操作。
若規定vlr分別代表:遍歷根節點、遍歷根節點的左子樹、遍歷根節點的右子樹,則有:
前序:vlr
中序:lvr
後序:lrv
二叉樹的遍歷 (遞迴版本)
//二叉樹的前序遍歷(根->左->右)
void
preorder(pbtnode proot)
} //二叉樹的中序遍歷(左->根->右)
void
inorder(pbtnode proot)
}//二叉樹的後序遍歷(左->右->根)
void
postorder(pbtnode proot)
}
求二叉樹節點個數//求二叉樹節點個數
int sizebintree(pbtnode proot)
銷毀二叉樹//銷毀二叉樹
void destroybintree(pbtnode* proot)
}
求葉子節點的個數//求葉子節點的個數
int getleafcount(pbtnode proot)
求樹的高度//求樹的高度
int heightbintree(pbtnode proot)
二叉樹的映象//二叉樹的映象(遞迴版本)
void mirror(pbtnode proot)
}
求二叉樹中第k層節點的個數//求二叉樹中第k層節點的個數
int getklevel(pbtnode proot, int k)
if (k == 1)
return
1; return getklevel(proot->_left,k-1) + getklevel(proot->_right,k-1);
}
二叉樹的遍歷 (非遞迴版本) 二叉樹基本操作
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...