数据结构---树与二叉树

个人介绍

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹

🦁作者简介 :一名喜欢分享和记录学习的在校大学生

💥个人主页code袁

💥 个人QQ :2647996100

🐯 个人wechat:code8896

专栏导航

code袁系列专栏导航
1 .毕业设计与课程设计:本专栏分享一些毕业设计的源码以及项目成果。🥰🥰🥰
2. 微信小程序开发:本专栏从基础到入门的一系开发流程,并且分享了自己在开发中遇到的一系列问题。🤹🤹🤹
3. vue开发系列全程线路:本专栏分享自己的vue的学习历程。

非常期待和您一起在这个小小的互联网世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

当然,我可以为您提供关于树和二叉树的学习笔记,包括代码和例子。请看下面的内容:

1、 什么是树?

树是一种非线性数据结构,由节点(或称为顶点)和边组成。树中有一个特殊的节点称为根节点,其他节点通过边相连,形成层次结构。每个节点可以有零个或多个子节点。

树的特点

  • 根节点:树中有一个根节点,是树的起始节点。
  • 父节点和子节点:除了根节点外,每个节点都有一个父节点和零个或多个子节点。
  • 层次结构:树形成层次结构,节点之间通过边相连。

树的例子

python 复制代码
# 创建一个树
class TreeNode:
    def __init__(self, value):
        self.value = value
        self.children = []

# 构建树结构
root = TreeNode(1)
child1 = TreeNode(2)
child2 = TreeNode(3)
root.children = [child1, child2]

创建树

python 复制代码
class TreeNode:
    def __init__(self, value):
        self.value = value
        self.children = []

# 创建树结构
root = TreeNode('A')
child1 = TreeNode('B')
child2 = TreeNode('C')
child3 = TreeNode('D')

root.children = [child1, child2, child3]

child1.children = [TreeNode('E'), TreeNode('F')]
child2.children = [TreeNode('G')]
child3.children = [TreeNode('H'), TreeNode('I')]

# 树结构示意图:
#        A
#      / | \
#     B  C  D
#    / \   / \
#   E   F G   H
#             \
#              I

树的遍历

前序遍历(Preorder Traversal)

前序遍历的顺序是:根节点 -> 左子树 -> 右子树

python 复制代码
def preorder_traversal(node):
    if not node:
        return
    print(node.value)
    for child in node.children:
        preorder_traversal(child)

# 执行前序遍历
preorder_traversal(root)
# Output: A B E F C G D H I
后序遍历(Postorder Traversal)

后序遍历的顺序是:左子树 -> 右子树 -> 根节点

python 复制代码
def postorder_traversal(node):
    if not node:
        return
    for child in node.children:
        postorder_traversal(child)
    print(node.value)

# 执行后序遍历
postorder_traversal(root)
# Output: E F B G C H I D A
层序遍历(Level Order Traversal)

层序遍历按层级顺序从上到下遍历树的节点

python 复制代码
from collections import deque

def level_order_traversal(root):
    if not root:
        return
    queue = deque([root])
    while queue:
        node = queue.popleft()
        print(node.value)
        for child in node.children:
            queue.append(child)

# 执行层序遍历
level_order_traversal(root)
# Output: A B C D E F G H I

2、什么是二叉树?

二叉树是一种特殊的树结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树常用于实现搜索算法和排序算法。

二叉树的特点

  • 左子节点和右子节点:每个节点最多有两个子节点,分别为左子节点和右子节点。
  • 遍历方式:二叉树的遍历方式包括前序遍历、中序遍历和后序遍历。

二叉树的例子

python 复制代码
# 创建一个二叉树
class BinaryTreeNode:
    def __init__(self, value):
        self.value = value
        self.left = None
        self.right = None

# 构建二叉树结构
root = BinaryTreeNode(1)
root.left = BinaryTreeNode(2)
root.right = BinaryTreeNode(3)

🎉写在最后

🍻伙伴们,如果你已经看到了这里,觉得这篇文章有帮助到你的话不妨点赞👍或 Star ✨支持一下哦!手动码字,如有错误,欢迎在评论区指正💬~

你的支持就是我更新的最大动力💪~

相关推荐
卡戎-caryon41 分钟前
【数据结构】06.栈&&队列
c语言·数据结构·算法·链表
2401_858286111 小时前
12.【C语言】创建函数
c语言·开发语言·数据结构
瑜陀1 小时前
2024.06.30 刷题日记
数据结构·算法·leetcode
阳光男孩012 小时前
力扣974.和可被K整除的子数组
数据结构·算法·leetcode
青釉Oo2 小时前
峰与谷00
java·数据结构·算法·leetcode
蓝天扶光2 小时前
初阶数据结构二叉树练习系列(1)
数据结构
汀小烟3 小时前
使用静态成员函数统计学生平均成绩
c语言·开发语言·数据结构·c++·vscode
mana飞侠4 小时前
代码随想录算法训练营第59天:动态[1]
开发语言·数据结构·算法·动态规划
zengy54 小时前
代码随想录打卡第十三天
数据结构·c++·算法·leetcode
野草y5 小时前
数据结构(3.2)——栈的顺序存储实现
数据结构