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

个人介绍

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 ✨支持一下哦!手动码字,如有错误,欢迎在评论区指正💬~

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

相关推荐
故事和你918 小时前
洛谷-数据结构1-4-图的基本应用1
开发语言·数据结构·算法·深度优先·动态规划·图论
破浪前行·吴10 小时前
数据结构概述
数据结构·学习
小欣加油12 小时前
leetcode2078 两栋颜色不同且距离最远的房子
数据结构·c++·算法·leetcode·职场和发展
我真不是小鱼12 小时前
cpp刷题打卡记录30——轮转数组 & 螺旋矩阵 & 搜索二维矩阵II
数据结构·c++·算法·leetcode
码完就睡15 小时前
数据结构——栈和队列的相互模拟
数据结构
iiiiyu15 小时前
常用API(SimpleDateFormat类 & Calendar类 & JDK8日期 时间 日期时间 & JDK8日期(时区) )
java·大数据·开发语言·数据结构·编程语言
故事和你9115 小时前
洛谷-数据结构1-4-图的基本应用2
开发语言·数据结构·算法·深度优先·动态规划·图论
꧁细听勿语情꧂16 小时前
数据结构概念和算法、时间复杂度、空间复杂度引入
c语言·开发语言·数据结构·算法
Felven17 小时前
B. The 67th 6-7 Integer Problem
数据结构·算法
研☆香17 小时前
聊一聊如何分析js中的数据结构
开发语言·javascript·数据结构