当前位置: 首页 > news >正文

江苏省灌云建设局5.0网站最佳bt磁力狗

江苏省灌云建设局5.0网站,最佳bt磁力狗,齐齐哈尔铁峰建设局网站,湖南住房和城乡建设网站开始系统学习算法啦!为后面力扣和 蓝桥杯的刷题做准备!这个专栏将记录自己学习算法是的笔记,包括 概念, 算法运行过程,以及 代码实现,希望能给大家带来帮助,感兴趣的小伙伴欢迎评论区留言或者私…

开始系统学习算法啦!为后面力扣和 蓝桥杯的刷题做准备!这个专栏将记录自己学习算法是的笔记,包括 概念, 算法运行过程,以及 代码实现,希望能给大家带来帮助,感兴趣的小伙伴欢迎评论区留言或者私信博主哦!今天更新的是 《07 二叉树》

目录

一、树概念

二、性质

三、特殊二叉树

四、二叉树的节点及树的创建

五、二叉树的遍历

5.1深度优先遍历

先序遍历

中序遍历

后续遍历

5.2 广度优先遍历(层次遍历)


一、树概念

二叉树是每个节点最多有两个子树的树结构。通常子树被称作”左子树“(left subtree)和”右子树“(right subtree)。

二、性质

  1. 在二叉树的第i层上至多有2^(i-1)个节点(i>0)
  2. 深度为k的二叉树至多有2^k-1个节点
  3. 对于任意一颗二叉树,如果其叶节点数为N0,而度数为2 的节点总书为N2,那么N0 = N2+1
  4. 具有n个系欸点的完全二叉树的深度必为log2(n+1)
  5. 对完全二叉树 ,若从上到下、从左到右编号,则编号为i的结点,其左孩子编号必为2i,其右孩子编号必为2i+1;其双氢的编号必为i/2 (i=1时为根除外)

三、特殊二叉树

完全二叉树:设二叉树的高度为h,除第h层外,其他各层(1~h-1)的节点数都达到最大个数,第h层有叶子节点,并且叶子节点都是从左到右依次排布,这就是完全二叉树。

满二叉树:除了叶节点外每个节点都有左右子叶且叶子节点都处在最外层的二叉树

四、二叉树的节点及树的创建

  • 节点创建
class Node(object):def __init__(self,elem=-1,lchild=None,rchild=None):self.elem = elemself.lchild = lchildself.rchild = rchild
  • 树的初始化
class Tree(object):def __init__(self,root = None):self.root =root
  • 添加节点
    def add(self,elem):# 首先创建节点node = Node(elem)# 如果树是空的,则对root根赋值if self.root == None:self.root = nodeelse:queue = []queue.append(self.root)# 对已有的节点进行层次遍历while queue:cur = queue.pop(0)if cur.lchild == None:cur.lchild = nodereturnelif cur.rchild == None:cur.rchild = nodereturnelse:#如果左右子树都不为空,加入队列继续判断queue.append(cur.lchild)queue.append(cur.rchild)

五、二叉树的遍历

树的遍历是书的一种重要的运算,所谓遍历是指对树中所有节点的信息的访问,即一次对树中每个节点访问一次且仅访问一次,我们把这种对所有节点的访问称为遍历(traveral)。那么树的两种重要的遍历模式是深度优先遍历和广度优先遍历,深度优先一般用递归,广度优先一般用队列,一般情况下能用递归实现的算法大部分也能用堆栈来实现

5.1深度优先遍历

对于一颗二叉树,深度优先搜素(Depth First Search)是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。

那么深度遍历有重要的三种方法。这三种方式常被用于访问树的节点,他们之间的不同在于访问每个节点的次序不同。这三种遍历分别叫做先序遍历(preorder),中序遍历(inorder),和后序遍历(prstorder)。我们给出详细定义,然后举例看看它们的应用。

  • 先序遍历

在先序遍历中,我们先访问根节点,然后递归使用先序遍历访问左子树,然后再递归使用先序遍历访问右子树。

访问的顺序为:根节点->左子树->右子树

代码实现

class Tree(object):def preorder(self,root):if root == None:returnprint(root.item)self.preorder(root.lchild)self.preorder(root.rchild)
  • 中序遍历

在中序遍历中,我们递归使用中序遍历访问左子树,然后访问根节点,最后再递归使用中序遍历访问右子树

访问顺序为:左子树->根节点->右子树

代码实现

class Tree(object):def inorder(self,root):if root == None:returnself.inorder(root.lchild)print(root.item)self.inorder(root.rchild)
  • 后续遍历

在后续遍历中,我们先递归使用后序遍历访问左子树和右子树,最后访问根节点。

访问顺序为:左子树->右子树->根节点

代码实现

class Tree(object):def postorder(self,root):if root == None:returnself.postorder(root.lchild)self.postorder(root.rchild)print(root.item)

5.2 广度优先遍历(层次遍历)

从树的root开始,从上到下从左到右遍历整个树的节点

代码实现

class Tree(object):def breath_travel(self):if self.root == None:returnqueue = []queue.append(self.root)while queue:node =queue.pop(0)print(node.elem)if node.lchild != None:queue.append(node.lchild)if node.rchild != None:queue.append(node.rchild)

http://www.yidumall.com/news/102432.html

相关文章:

  • 网站策划书的编写如何开通自己的网站
  • 嘉兴专业做网站百度seo排名主要看啥
  • 唯品会信息科技有限公司成都seo网络优化公司
  • 淘宝网网站建设的需求分析seo关键词排名优化手机
  • 怎么用cms做网站百度竞价开户哪家好
  • 做的网站被挂马网站测试
  • 自己做淘宝客网站吗东莞互联网推广
  • 网站建设费记入科目有创意的营销案例
  • 网站上线怎么做福州关键词优化平台
  • 怎么搭建手机网站m百度推广登录后台登录入口
  • 手机网站推广方案网络推广方法有几种
  • 湖北建设执业注册中心网站关键词搜索趋势
  • 手机网站做桌面快捷方式网站一键收录
  • 好看的网站首页图片sem是什么公司
  • 西安便宜网站建设兰州网络推广新手
  • 教育网站官网入口自动秒收录网
  • 做网站用什么网最好seo长尾快速排名
  • 做音乐网站用什么程序北京百度网讯科技有限公司
  • 嘉兴 网站建设品牌推广营销平台
  • 白城北京网站建设实时热点新闻
  • 中国人做外贸网站都卖什么关键词排名优化易下拉软件
  • 网站建设能挣钱网站推广如何收费
  • 招聘网站开发需求域名ip查询
  • 单页面网站制作技术淘宝店铺推广方式有哪些
  • 网站一直被攻击怎么办商丘seo教程
  • 山东省住房和城乡建设厅网站教育中心线下推广公司
  • 网站程序 wordpress 织梦 discuz网络营销包括哪些
  • 深圳做网站价格如何进行app推广
  • 毕业设计网站开发的中期报告百度网站提交收录入口
  • 网站里的聊天怎么做的百度网站下拉排名