Python二叉排序樹(shù)如何構(gòu)造

小億
92
2023-12-14 17:18:23

構(gòu)造一個(gè)二叉排序樹(shù)(Binary Search Tree,BST)的方法有多種,以下是一種常見(jiàn)的方法:

  1. 創(chuàng)建一個(gè)空的二叉排序樹(shù)。
  2. 從數(shù)據(jù)集合中選擇一個(gè)值作為根節(jié)點(diǎn),將其插入二叉排序樹(shù)中。
  3. 遍歷數(shù)據(jù)集合的其他值,逐個(gè)將其插入二叉排序樹(shù)中。
    • 如果當(dāng)前值小于等于當(dāng)前節(jié)點(diǎn)的值,則將其插入當(dāng)前節(jié)點(diǎn)的左子樹(shù)中。
    • 如果當(dāng)前值大于當(dāng)前節(jié)點(diǎn)的值,則將其插入當(dāng)前節(jié)點(diǎn)的右子樹(shù)中。
    • 如果當(dāng)前節(jié)點(diǎn)的左子樹(shù)或右子樹(shù)為空,則插入值成為當(dāng)前節(jié)點(diǎn)的左子節(jié)點(diǎn)或右子節(jié)點(diǎn)。
  4. 重復(fù)步驟3直到遍歷完所有的值。
  5. 構(gòu)造完成后,返回二叉排序樹(shù)的根節(jié)點(diǎn)。

以下是一個(gè)示例代碼實(shí)現(xiàn):

class TreeNode:
    def __init__(self, value):
        self.value = value
        self.left = None
        self.right = None

def insert_node(root, value):
    if root is None:
        return TreeNode(value)
    if value <= root.value:
        root.left = insert_node(root.left, value)
    else:
        root.right = insert_node(root.right, value)
    return root

def construct_bst(data):
    root = None
    for value in data:
        root = insert_node(root, value)
    return root

# 示例用法
data = [8, 3, 10, 1, 6, 14, 4, 7, 13]
bst = construct_bst(data)

該示例代碼中,TreeNode 類表示二叉排序樹(shù)的節(jié)點(diǎn),insert_node 函數(shù)用于將一個(gè)值插入到二叉排序樹(shù)中,construct_bst 函數(shù)用于構(gòu)造二叉排序樹(shù)。通過(guò)遍歷數(shù)據(jù)集合,將每個(gè)值插入到二叉排序樹(shù)中,最后返回根節(jié)點(diǎn)。

0