📌  相关文章
📜  教资会网络 | UGC NET CS 2015 年 12 月 – III |问题 37(1)

📅  最后修改于: 2023-12-03 15:26:03.134000             🧑  作者: Mango

教资会网络 | UGC NET CS 2015 年 12 月 – III |问题 37

在这道题目中,我们需要熟悉二叉搜索树的相关操作,并在代码中实现它们。以下是二叉搜索树的一些基本操作:

插入节点

我们可以通过以下递归函数插入节点:

class Node:
    def __init__(self, data):
        self.left = None
        self.right = None
        self.data = data

def insert_node(root, node):
    if root is None:
        root = node
    else:
        if root.data < node.data:
            if root.right is None:
                root.right = node
            else:
                insert_node(root.right, node)
        else:
            if root.left is None:
                root.left = node
            else:
                insert_node(root.left, node)
删除节点

我们可以通过以下递归函数删除节点:

def delete_node(root, data):
    if root is None:
        return root
    if data < root.data:
        root.left = delete_node(root.left, data)
    elif data > root.data:
        root.right = delete_node(root.right, data)
    else:
        if root.left is None:
            temp = root.right
            root = None
            return temp
        elif root.right is None:
            temp = root.left
            root = None
            return temp
        temp = get_min_value_node(root.right)
        root.data = temp.data
        root.right = delete_node(root.right, temp.data)
    return root

def get_min_value_node(root):
    current = root
    while current.left is not None:
        current = current.left
    return current
搜索节点

我们可以通过以下递归函数搜索节点:

def search_node(root, data):
    if root is None or root.data == data:
        return root
    if root.data < data:
        return search_node(root.right, data)
    return search_node(root.left, data)
遍历树

我们可以通过以下递归函数遍历树:

def inorder_traversal(root):
    if root:
        inorder_traversal(root.left)
        print(root.data)
        inorder_traversal(root.right)

def postorder_traversal(root):
    if root:
        postorder_traversal(root.left)
        postorder_traversal(root.right)
        print(root.data)

def preorder_traversal(root):
    if root:
        print(root.data)
        preorder_traversal(root.left)
        preorder_traversal(root.right)

二叉搜索树是一种非常重要的数据结构,在程序中广泛地应用。这些操作对于程序员来说是必不可少的基本技能。