二叉樹 二叉搜尋樹建立 插入 刪除 查詢等操作

2022-08-31 09:39:09 字數 1748 閱讀 3569

二叉搜尋樹性質如下:

//二叉搜尋樹篇

#include #include struct search_tree_typedef;

struct search_tree_typedef;

typedef struct search_tree_typedef stree_node;

//向二叉搜尋樹插入乙個元素

int insert_search_tree(stree_node **t, int key)

while(x!=null)

else

} new_node->p = y;

if(key>y->key)

y->rc = new_node;

else

y->lc = new_node;

return 0;

}//建立二叉搜尋樹

int create_search_tree(stree_node **t)

}

//查詢關鍵字為key的節點

stree_node* find_node(stree_node *t, int key)

else

} return x;

}

//查詢最大關鍵字的節點

stree_node* find_maxkey(stree_node *t)

return y;

}//查詢最小關鍵字的節點

stree_node* find_minkey(stree_node *t)

return y;

}

//查詢指定關鍵字的節點的前驅節點

stree_node* find_precursor(stree_node *t, int key)

else

return null;

}} else }}

//查詢指定節點的前驅結點

stree_node* find_precursor2(stree_node *x)

else

return null;

}} else }}

//查詢指定關鍵字key的節點的後驅節點

stree_node* find_successor(stree_node *t, int key)

else

return null;

}} else }}

//查詢指定節點的後驅節點

stree_node* find_successor2(stree_node *x)

else

return null;

}} else }}

//刪除指定關鍵字key的節點

int delete_stree_node(stree_node **t, int del_key)

else if(x->lc&&x->rc)

else

}else

else

}} else

}else

}} free(x); }}

//中序遍歷二叉樹

void in_visit_tree(stree_node *tree)

printf("%d ", tree->key);

if(tree->rc!=null)

}//測試資料:建樹序列13 5 2 9 6 18 15 17 19,中序序列為2 5 6 9 13 15 17 18 19

int main(void)

搜尋二叉樹 插入 刪除)

1.1搜尋二叉樹的概念 二叉搜尋樹又稱二叉排序樹,它或者是一棵空樹,或者是具有一下性質的樹 1.2二叉搜尋樹操作 1.二叉搜尋樹的查詢 若根節點不為空 否則,返回false node find const k key else if cur kv.first kv.first else return...

二叉樹 二叉搜尋樹的建立和插入

二叉搜尋樹又名二叉排序樹。大概簡略的思維導圖如下,方便記憶特性 基本二叉搜尋樹建立過程如下 資料結構如下 typedef struct tree tree,treenode node 為二叉樹根節點,insert為插入的節點 void create tree treenode node,tree i...

二叉樹 還原二叉樹 二叉搜尋樹

先序遍歷的特點 先遍歷根結點,再遍歷左子樹,最後再遍歷右子樹 中序遍歷的特點 先遍歷左子樹,再遍歷根結點,最後再遍歷右子樹 後序遍歷的特點 先遍歷左子樹,再遍歷右子樹,最後再遍歷根結點 舉例 先序遍歷 a b d f g h i e c 中序遍歷 f d h g i b e a c 如上,根據先序遍...