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

个人介绍

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

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

相关推荐
tian-ming6 小时前
JavaWeb后端开发知识储备2
notepad++
Hera_Yc.H7 小时前
数据结构之一:复杂度
数据结构
肥猪猪爸8 小时前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
linux_carlos8 小时前
环形缓冲区
数据结构
readmancynn8 小时前
二分基本实现
数据结构·算法
Bucai_不才8 小时前
【数据结构】树——链式存储二叉树的基础
数据结构·二叉树
盼海8 小时前
排序算法(四)--快速排序
数据结构·算法·排序算法
一直学习永不止步9 小时前
LeetCode题练习与总结:最长回文串--409
java·数据结构·算法·leetcode·字符串·贪心·哈希表
珹洺10 小时前
C语言数据结构——详细讲解 双链表
c语言·开发语言·网络·数据结构·c++·算法·leetcode
_whitepure10 小时前
常用数据结构详解
java·链表····队列·稀疏数组