返回

数据结构:链式二叉树的前中后序遍历与基本操作

后端

链式二叉树是一种利用指针实现的二叉树,其中每个节点包含指向其左子树和右子树的指针,以及存储数据项的变量。链式二叉树存储元素时,每个节点占一个存储单元,即存储二叉树中一个数据元素及其左右子树的信息。

前中后序遍历

二叉树的遍历是指从根节点出发,按照一定的规则访问树中的所有节点。最常用的三种遍历方式是前序遍历、中序遍历和后序遍历。

前序遍历 :先访问根节点,然后递归地遍历左子树,最后递归地遍历右子树。

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

中序遍历 :先递归地遍历左子树,然后访问根节点,最后递归地遍历右子树。

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

后序遍历 :先递归地遍历左子树,然后递归地遍历右子树,最后访问根节点。

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

基本操作

链式二叉树的基本操作包括插入、删除和搜索。

插入 :在二叉树中插入一个新节点。

def insert(root, data):
    if root is None:
        root = Node(data)
    elif data < root.data:
        insert(root.left, data)
    else:
        insert(root.right, data)

删除 :从二叉树中删除一个节点。

def delete(root, data):
    if root is None:
        return None
    elif data < root.data:
        root.left = delete(root.left, data)
    elif data > root.data:
        root.right = delete(root.right, data)
    else:
        if root.left is None:
            return root.right
        elif root.right is None:
            return root.left
        else:
            min_node = find_min(root.right)
            root.data = min_node.data
            root.right = delete(root.right, min_node.data)
    return root

搜索 :在二叉树中搜索一个节点。

def search(root, data):
    if root is None:
        return None
    elif data < root.data:
        return search(root.left, data)
    elif data > root.data:
        return search(root.right, data)
    else:
        return root

总结

链式二叉树是一种常用的数据结构,具有存储和查找数据等特点。链式二叉树的前中后序遍历可以帮助我们遍历树中的所有节点,而基本操作如插入、删除和搜索可以帮助我们维护树中的数据。