- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE1
PAGE1
算法基础
1叉树的定义与性质
二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树的定义可以形式化为:
二叉树是一个有限节点的集合,这个集合或者为空,或者由一个根节点和两个互不相交的、分别称为左子树和右子树的二叉树组成。
二叉树的性质包括:
深度:二叉树的深度是指从根节点到最远叶子节点的最长路径上节点的数量。
高度:二叉树的高度是指从根节点到最远叶子节点的最长路径的边数。
满二叉树:在满二叉树中,所有层的节点数都达到最大值,即第i层有2^(i-1)个节点。
完全二叉树:在完全二叉树中,除了最后一层,其他层都是满的,且最后一层的节点都靠左排列。
平衡二叉树:平衡二叉树是一种特殊的二叉树,其中任意节点的左右子树的高度差不超过1。
1.1示例代码:二叉树的定义
classTreeNode:
定义二叉树的节点
def__init__(self,value=0,left=None,right=None):
self.value=value
self.left=left
self.right=right
#创建一个简单的二叉树
root=TreeNode(1)
root.left=TreeNode(2)
root.right=TreeNode(3)
root.left.left=TreeNode(4)
root.left.right=TreeNode(5)
2叉树的遍历方法:前序、中序、后序与层次遍历
二叉树的遍历是指按照某种顺序访问树中的所有节点,确保每个节点被访问一次。主要的遍历方法有前序遍历、中序遍历、后序遍历和层次遍历。
2.1前序遍历
前序遍历的顺序是:根节点-左子树-右子树。
2.1.1示例代码:前序遍历
defpreorder_traversal(node):
前序遍历
ifnodeisNone:
return[]
return[node.value]+preorder_traversal(node.left)+preorder_traversal(node.right)
#使用前序遍历
print(preorder_traversal(root))#输出:[1,2,4,5,3]
2.2中序遍历
中序遍历的顺序是:左子树-根节点-右子树。
2.2.1示例代码:中序遍历
definorder_traversal(node):
中序遍历
ifnodeisNone:
return[]
returninorder_traversal(node.left)+[node.value]+inorder_traversal(node.right)
#使用中序遍历
print(inorder_traversal(root))#输出:[4,2,5,1,3]
2.3后序遍历
后序遍历的顺序是:左子树-右子树-根节点。
2.3.1示例代码:后序遍历
defpostorder_traversal(node):
后序遍历
ifnodeisNone:
return[]
returnpostorder_traversal(node.left)+postorder_traversal(node.right)+[node.value]
#使用后序遍历
print(postorder_traversal(root))#输出:[4,5,2,3,1]
2.4层次遍历
层次遍历是从根节点开始,先访问同一层的所有节点,然后依次访问下一层的节点。
2.4.1示例代码:层次遍历
fromcollectionsimportdeque
deflevel_order_traversal(node):
层次遍历
ifnodeisNone:
return[]
queue=deque([node])
result=[]
whilequeue:
current_node=queue.popleft()
result.append(current_node.value)
ifcurrent_node.left:
queue.append(current_node.l
您可能关注的文档
- 软件工程-基础课程-算法_并行与分布式算法:MapReduce、分布式排序、分布式搜索.docx
- 软件工程-基础课程-算法_动态规划:背包问题、最长公共子序列、编辑距离.docx
- 软件工程-基础课程-算法_分治算法:大整数乘法、Strassen矩阵乘法、最近点对问题.docx
- 软件工程-基础课程-算法_回溯算法:八皇后问题、图的着色问题.docx
- 软件工程-基础课程-算法_机器学习算法:线性回归、逻辑回归、决策树、神经网络.docx
- 软件工程-基础课程-算法_排序算法:冒泡排序、快速排序、归并排序.docx
- 软件工程-基础课程-算法_强化学习算法:Q学习、SARSA、Deep Q-Network.docx
- 软件工程-基础课程-算法_深度学习算法:卷积神经网络、循环神经网络、生成对抗网络.docx
- 软件工程-基础课程-算法_数据结构:数组、链表、栈、队列、哈希表.docx
- 软件工程-基础课程-算法_数值算法:数值积分、数值微分、数值线性代数.docx
最近下载
- 2024年采制样工考试2024年采制样工试题库(判断题)试卷 .pdf
- 营销心理学(第五版)——数字时代消费者行为分析 课件 单凤儒 模块6--8 场景行为:传播与广告心理效应 ---现代场景:网络与新媒体营销心理效应 .pptx
- 内典讲座之研究.pdf
- 2024至2030年中国抬头显示器(HUD)行业市场深度研究及发展趋势预测报告.docx
- 新建南通至宁波高速铁路环境影响报告书.pdf
- 2024年GD省生态环境监测专业技术人员大比武模拟试卷及答案-3应急监测.pdf
- 第四章 刺胞动物门之二PPT课件.pptx
- 【B-1】本机构为护士实施治疗及护理时提供必要的防护措施,护士熟练掌握常见技术操作及并发症预防措施及处理流程。.docx
- 最新《简爱》课件PPT完整版.ppt
- 管理者领导能力的提升.ppt
文档评论(0)