python中树与树的表示知识点总结

  • Post category:Python

首先先介绍一下树的基本概念:树是一种非线性的数据结构,它由以下几个部分组成:

  1. 根节点:一棵树有且仅有一个根节点,它是这棵树的起点。

  2. 分支:除了根节点,每个节点都有一个父节点,可以有多个子节点。

  3. 叶子节点:没有子节点的节点称为叶子节点。

  4. 高度:树的高度指从根节点到叶子节点的最长路径。

在Python中,我们可以使用节点类来表示树,通常节点类至少包含一个属性表示当前节点的值,以及一个列表记录它的子节点。

示例1:创建一棵树

我们可以使用如下的代码来创建一棵树:

# 定义节点类
class TreeNode:
    def __init__(self, value):
        self.value = value
        self.children = []

    # 添加子节点方法
    def add_child(self, child_node):
        self.children.append(child_node)

# 创建根节点
root = TreeNode("A")
# 创建子节点
child1 = TreeNode("B")
child2 = TreeNode("C")
child3 = TreeNode("D")
# 将子节点添加到根节点下
root.add_child(child1)
root.add_child(child2)
root.add_child(child3)

通过这个例子可以看到,我们首先需要定义一个节点类,然后可以使用这个节点类来创建树的各个节点,最后通过节点类的add_child方法将节点组成一棵树。

示例2:遍历一棵树

树的遍历通常有三种方式:前序遍历、中序遍历和后序遍历。这里我们以前序遍历为例进行演示。前序遍历的顺序是先访问根节点,然后依次访问左子树和右子树。

# 前序遍历
def preorder_traversal(node):
    if not node:
        return
    print(node.value)
    for child in node.children:
        preorder_traversal(child)

# 遍历树
preorder_traversal(root)

在遍历时,首先输出根节点的值,然后依次遍历每个子节点,对于每个子节点递归调用遍历方法,这样可以保证先访问左子树的节点。