二叉搜尋樹

2021-06-18 11:44:35 字數 1237 閱讀 8546

二叉搜尋樹(binary search tree):假設x為二叉搜尋樹的乙個節點,如果y節點位於左子樹,則y.key<=x.key,如果y節點位於右子樹,則y.key>=x.key。例如(摘自演算法導論圖12.2):

二叉搜尋樹完整**如下:

#include #include struct bst_node ;

int bst_nodes = ;

struct bst_node *new_node(int key)

new->key = key;

new->left = new->right = null;

return new;

}void bst_insert(struct bst_node **root, struct bst_node *new)

else else }}

void bst_create(struct bst_node **root) }}

void bst_destroy(struct bst_node *root)

}void bst_preorder(struct bst_node *root)

}void bst_inorder(struct bst_node *root)

}void bst_postorder(struct bst_node *root)

}struct bst_node *bst_search(struct bst_node *root, int key)

if (key < root->key) else

}struct bst_node *bst_minimum(struct bst_node *root)

return root;

}struct bst_node *bst_maximum(struct bst_node *root)

return root;

}int main(void)

編譯執行後結果為:

15    6    3    2    4    7   13    9   18   17   20

2    3    4    6    7    9   13   15   17   18   20

2    4    3    9   13    7    6   17   20   18   15

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...

二叉搜尋樹 修剪二叉搜尋樹

第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。treenode trimbst treenode root,int low,int high if root val high 下一層處理完左子樹的結果賦給root left,處理完右子樹的結果賦給root right。root left ...

樹 二叉樹 二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...