二叉樹結構體定義以及函式宣告:
typedef int btdatatype;
typedef struct binarytreenode
btnode;
btnode* buybtnode(btdatatype x);//建立樹的節點
// 建立二叉樹
btnode* createbtree(btdatatype* a, size_t* pindex, btdatatype invalid);
void btreeprevorder(btnode* root);//先序遍歷
void btreeinorder(btnode* root);//中序遍歷
void btreepostorder(btnode* root);//後序遍歷
size_t btreesize(btnode* root);//樹的節點個數
size_t btreeleafsize(btnode* root);//葉節點個數
size_t btreeklevelsize(btnode* root, size_t k);//第k層節點個數
size_t btreedepth(btnode* root);//深度
btnode* btreefind(btnode* root, btdatatype x);//查詢
建立樹的節點:
btnode* buybtnode(btdatatype x)
建立樹:
建立樹的時候我們可以先將樹節點的資料存放到乙個陣列裡,然後分別將陣列的資料存放到樹結構中。列如:int a = ,「#」井號表示該節點為空。
btnode* createbtree(btdatatype* a, size_t* pindex, btdatatype invalid)
return null;
}
建立樹的時候採用先序遍歷的順序,第乙個引數為陣列。第二個引數為陣列下標,這裡需要注意,下標應該傳的是指標,因為建立樹使用遞迴來實現的,若傳的不是指標而是整型,當在遞迴呼叫的過程中返回之前的呼叫時,下標值會返回之前的數值,與預期不符。第三個引數則是乙個識別符號,用於判斷當前節點是否為空。
先序遍歷:
void btreeprevorder(btnode* root)
}
如果當前節點為空,則返回。若果不為空,則輸出當前節點,然後遍歷左孩子,再遍歷右孩子。
中序遍歷:
void btreeinorder(btnode* root)
}
如果當前節點為空,則返回。若果不為空,則遍歷左孩子,然後輸出當前節點,再遍歷右孩子。
後序遍歷:
void btreepostorder(btnode* root)
}
如果當前節點為空,則返回。若果不為空,則遍歷左孩子,再遍歷右孩子,然後輸出當前節點。
樹的節點個數:
size_t btreesize(btnode* root)
else
}
葉子節點的個數:
size_t btreeleafsize(btnode* root)
if (root->_left == null&&root->_right == null)
return btreesize(root->_left) + btreesize(root->_right);
}
第k層節點個數:
size_t btreeklevelsize(btnode* root, size_t k)
if (k == 1)
else
}
樹的深度:
size_t btreedepth(btnode* root)
if (root->_left == null&&root->_right == null)
else
}
如果當前節點為空則返回0,若當前節點的左右孩子都為空則返回1,如果上述兩種情況都不滿足則繼續遍歷左右孩子,最後返回較大的乙個。
查詢指定節點:
btnode* btreefind(btnode* root, btdatatype x)
if (root->_right != null)
}
二叉樹基本操作
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...