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

个人介绍

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹
在这里插入图片描述
🦁作者简介:一名喜欢分享和记录学习的在校大学生
💥个人主页:code袁
💥 个人QQ:2647996100
🐯 个人wechat:code8896

专栏导航

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

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

在这里插入图片描述

在这里插入图片描述
当然,我可以为您提供关于树和二叉树的学习笔记,包括代码和例子。请看下面的内容:

1、 什么是树?

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

树的特点

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

树的例子

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

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

创建树

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)

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

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)

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

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)

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

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、什么是二叉树?

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

二叉树的特点

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

二叉树的例子

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

你的支持就是我更新的最大动力💪~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/695191.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TalkingData 是一家专注于提供数据统计和分析解决方案的独立第三方数据智能服务平台

TalkingData 是一家专注于提供数据统计和分析解决方案的独立第三方数据智能服务平台。通过搜索结果,我们可以了解到 TalkingData 的一些关键特性和市场情况,并将其与同类型产品进行比较。 TalkingData 产品特性 数据统计与分析:提供专业的数…

复数乘法IP核的使用

一、IP核解析 在这张图片中,我们看到的是一个“Complex Multiplier (6.0)” IP 核的配置界面。以下是各个配置参数的详细说明: 1.1 Multiplier Construction Use LUTs: 选择这个选项时,乘法器将使用查找表(LUTs)来实现…

TiDB-从0到1-配置篇

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇TiDB-从0到1-配置篇 一、系统配置 TiDB的配置分为系统配置和集群配置两种。 其中系统配置对应TiDB Server(不包含TiKV和PD的参数&#xff0…

显示子系统,显示子前后端,linuxfb,wayland

显示前端 显示前端通常指的是在图形系统中负责生成图形数据的部分或组件。它负责接收来自应用程序或图形引擎的图形数据,并将其转换成适合显示的格式,以便发送到显示后端进行处理和输出。 显示前端的功能通常包括以下几个方面: 图形数据生…

好书推荐之《生成式 AI 入门与亚马逊云科技AWS实战》

最近小李哥在亚马逊云科技峰会领到了一本关于如何在云计算平台上设计、开发GenAI应用的书,名字叫:《生成式 AI 入门与亚马逊云科技AWS实战》,今天仔细看了下,发现这本书讲的真的很好!他涵盖了当下AI领域所有热门的技术…

探究IOC容器刷新环节初始化前的预处理

目录 一、IOC容器的刷新环节快速回顾 二、初始化前的预处理prepareRefresh源码分析 三、初始化属性源 (一)GenericWebApplicationContext初始化属性源 (二)StaticWebApplicationContext初始化属性源 四、初始化早期事件集合…

31、matlab卷积运算:卷积运算、二维卷积、N维卷积

1、conv 卷积和多项式乘法 语法 语法1:w conv(u,v) 返回向量 u 和 v 的卷积。 语法2:w conv(u,v,shape) 返回如 shape 指定的卷积的分段。 参数 u,v — 输入向量 shape — 卷积的分段 full (默认) | same | valid full:全卷积 ‘same…

简记:为Docker配置服务代理

简记 为Docker配置服务代理 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/art…

NLP实战入门——文本分类任务(TextRNN,TextCNN,TextRNN_Att,TextRCNN,FastText,DPCNN,BERT,ERNIE)

本文参考自https://github.com/649453932/Chinese-Text-Classification-Pytorch?tabreadme-ov-file,https://github.com/leerumor/nlp_tutorial?tabreadme-ov-file,https://zhuanlan.zhihu.com/p/73176084,是为了进行NLP的一些典型模型的总…

论文阅读——MIRNet

项目地址: GitHub - swz30/MIRNet: [ECCV 2020] Learning Enriched Features for Real Image Restoration and Enhancement. SOTA results for image denoising, super-resolution, and image enhancement.GitHub - soumik12345/MIRNet: Tensorflow implementation…

idea打开hierarchy面板

hierarchy:查看类层级关系图 不同版本的IDEA的快捷键不一样,同时如果修改了IDEA快捷键,也可能会不一样,具体查看可通过IDEA上方的Navigate来查看navigate--Type Hierarchy,就可以看见其快捷键了,我的快捷键…

简单记录玩4399游戏flash插件问题

一、因谷歌浏览器默认禁止flash插件自动运行,所以玩家在使用谷歌浏览器,访问www.4399.com平台页面或者4399小游戏(flash资源)时,可能会出现加载异常的情况。今天教大家如何开启flash插件 二、下载falsh官方插件 地址:Flash Player官方下载中心-Flash中国官网 三、如果您…

【IoT NTN】3GPP R18中关于各类IoT设备在NTN中的增强和扩展

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。 博客内容主要围绕…

动态路由协议RIP(思科、华为)

#交换设备 动态路由协议RIP 路由协议 静态路由 需要管理员手动配置 动态路由 是在路由器上启用某动态路由协议,进行自己直连网段的宣告,从而相邻的路由器就可以学习的相邻的路由器所宣告的网段,每一台路由器都把自己直连的网段宣告出去&am…

LINUX网络FTP服务

一、FTP服务 FTP服务:file transfer protocol :文件传输协议。在网络上进行双向传输,也是一个应用程序。不同的操作系统有不同的FTP软件,但使用的协议是一样的。 FTP协议基于TCP协议,有两个端口,即20和21。 20端口&…

《大道平渊》· 拾壹 —— 商业一定是个故事:讲好故事,员工奋发,顾客买单。

《大道平渊》 拾壹 "大家都在喝,你喝不喝?" 商业一定是个故事,人民群众需要故事。 比如可口可乐的各种故事。 可口可乐公司也只是被营销大师们, 作为一种故事载体,发挥他们的本领。 营销大师们开发故事…

《精通ChatGPT:从入门到大师的Prompt指南》第11章:Prompt与AI的未来

第11章:Prompt与AI的未来 11.1 技术发展的新方向 在迅速发展的人工智能领域,Prompt工程作为与AI模型交互的核心方式,正处于技术创新的前沿。未来几年,Prompt工程将沿着多个新方向发展,这些方向不仅会改变我们与AI互动…

SOA的设计模式_2.企业服务总线模式

1.企业服务总线(|Enterprise Service Bus,ESB) 在企业基于SOA实施EAI、B2B和BMP的过程中,如果采用点对点的集成方式存在着复杂度高,可管理性差,复用度差和系统脆弱等问题。企业服务总线(…

(南京观海微电子)——温度对TFT影响及改善方式

温度如何损坏 LCD? 这个工作温度范围会影响设备内的电子部分,超出范围会导致 LCD 技术在高温下过热或在寒冷时变慢。 至于液晶层,如果放在高温下,它会变质,导致它和显示器本身出现缺陷。 LCD 温度限制: 什…

架构设计-加密解决的基本工具方法

软件工程实施过程中,经常会用到加密解密相关的工具类,整理如下: import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;import javax.crypto.Cipher; import java.security.*; import java.security.interfaces.RSAPrivateKey; imp…