有序二叉樹的實現

2021-08-19 14:21:27 字數 1610 閱讀 2761

#include #include struct node;

typedef structtree;

typedef struct nodenode;

//樹的初始化函式

void tree_init(tree *pt)

//樹的清理函式

void tree_delete(tree *pt)

//統計有效節點個數

int tree_size(const tree *pt)

//在有序二叉樹裡查詢某個數字所在位置的函式

tree *tree_search(const tree *pt, int val)

if(pt->pnode->data == val)

else if(pt->pnode->data > val)

else

}//在有序二叉樹裡加入新節點的函式

int tree_insert(tree *pt, int val)

new = (node *)malloc(sizeof(node));

if(!new)

new->data = val;

new->left.pnode = null;

new->right.pnode = null;

tmp->pnode = new;

return 1;

}//以中序遍歷方式處理有序二叉樹裡所有節點的函式

void tree_miter(tree *pt, void (*func)(int))

//刪除某個數字所在節點的函式

int tree_remove(tree *pt, int val)

rem = tmp->pnode;

if(!(rem->left.pnode) && !(rem->right.pnode))

else if(!(rem->left.pnode))

else if(!(rem->right.pnode))

else

free(rem);

rem = null;

return 1;

}void print_cb(int val)

int main()

; tree_init(&tr);

tree_insert(&tr, 50);

tree_insert(&tr, 30);

tree_insert(&tr, 70);

tree_insert(&tr, 20);

tree_insert(&tr, 40);

tree_insert(&tr, 60);

tree_insert(&tr, 80);

tree_insert(&tr, 45);

tree_insert(&tr, 65);

tree_remove(&tr, 30);

printf("size=%d\n", tree_size(&tr));

tree_miter(&tr, print_cb);

printf("\n");

tree_delete(&tr);

return 0;

}

樹轉二叉樹(有序樹轉換為二叉樹)講解

description 輸入一顆普通有序樹,將它轉換為對應的二叉鍊錶儲存,然後輸出該二叉樹的先序和後序遍歷序列。input 包含多組測試資料。每組測試資料第1行為樹的結點個數n 1 n 26 接下來包含n行,其中第i行 1 i n 的資料依次為結點i的資料值ai 為乙個小寫字母 後面各元素為結點i的...

二叉樹 排序二叉樹的簡單實現

二叉樹 排序二叉樹 include using namespace std 二叉樹的節點 date 資料 left 指向二叉樹的左子樹 right 指向二叉樹的右子樹 template struct node template class btree public btree root null c...

二叉樹實現

include include include include define maxsize 100 define ok 1 define error 0 define true 1 define false 0 typedef int status typedef int telemtype ty...