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

个人介绍

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

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

相关推荐
熬了夜的程序员6 小时前
【LeetCode】109. 有序链表转换二叉搜索树
数据结构·算法·leetcode·链表·职场和发展·深度优先
立志成为大牛的小牛7 小时前
数据结构——四十一、分块查找(索引顺序查找)(王道408)
数据结构·学习·程序人生·考研·算法
前端小L9 小时前
二分查找专题(九):“降维”的魔术!将二维矩阵“拉平”为一维
数据结构·算法
她说人狗殊途10 小时前
时间复杂度(按增长速度从低到高排序)包括以下几类,用于描述算法执行时间随输入规模 n 增长的变化趋势:
数据结构·算法·排序算法
Miraitowa_cheems10 小时前
LeetCode算法日记 - Day 102: 不相交的线
数据结构·算法·leetcode·深度优先·动态规划
野生技术架构师10 小时前
盘一盘Redis的底层数据结构
数据结构·数据库·redis
Miraitowa_cheems10 小时前
LeetCode算法日记 - Day 101: 最长公共子序列
数据结构·算法·leetcode·深度优先·动态规划
北冥湖畔的燕雀10 小时前
std之list
数据结构·c++·list
LXA080910 小时前
UniApp 小程序中使用地图组件
小程序·uni-app·notepad++
南方的狮子先生11 小时前
【C++】C++文件读写
java·开发语言·数据结构·c++·算法·1024程序员节