python二叉树递归 二叉树

没有更多推荐了,
不良信息举报
举报内容:
Python实现二叉树
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!python实现的二叉树定义与遍历算法实例
转载 &更新时间:日 10:09:09 & 作者:ZHOU YANG
这篇文章主要介绍了python实现的二叉树定义与遍历算法,结合具体实例形式分析了基于Python定义的二叉树及其常用遍历操作实现技巧,需要的朋友可以参考下
本文实例讲述了python实现的二叉树定义与遍历算法。分享给大家供大家参考,具体如下:
初学python,需要实现一个决策树,首先实践一下利用python实现一个二叉树数据结构。建树的时候做了处理,保证建立的二叉树是平衡二叉树。
# -*- coding: utf-8 -*-
from collections import deque
class Node:
def __init__(self,val,left=None,right=None):
self.val=val
self.left=left
self.right=right
#setter and getter
def get_val(self):
return self.val
def set_val(self,val):
self.val=val
def get_left(self):
return self.left
def set_left(self,left):
self.left=left
def get_right(self):
return self.right
def set_right(self,right):
self.right=right
class Tree:
def __init__(self,list):
list=sorted(list)
self.root=self.build_tree(list)
#递归建立平衡二叉树
def build_tree(self,list):
r=len(list)-1
return None
return Node(list[l])
mid=(l+r)/2
root=Node(list[mid])
root.left=self.build_tree(list[:mid])
root.right=self.build_tree(list[mid+1:])
return root
def preorder(self,root):
if(root is None):
print root.val
self.preorder(root.left)
self.preorder(root.right)
def postorder(self,root):
if(root is None):
self.postorder(root.left)
self.postorder(root.right)
print root.val
def inorder(self,root):
if(root is None):
self.inorder(root.left)
print root.val
self.inorder(root.right)
def levelorder(self,root):
if root is None:
queue =deque([root])
while(len(queue)&0):
size=len(queue)
for i in range(size):
node =queue.popleft()
print node.val
if node.left is not None:
queue.append(node.left)
if node.right is not None:
queue.append(node.right)
list=[1,-1,3,4,5]
tree=Tree(list)
print '中序遍历:'
tree.inorder(tree.root)
print '层序遍历:'
tree.levelorder(tree.root)
print '前序遍历:'
tree.preorder(tree.root)
print '后序遍历:'
tree.postorder(tree.root)
建立的二叉树如下图所示:
PS:作者的github:
更多关于Python相关内容可查看本站专题:《》、《》、《》、《》、《》及《》
希望本文所述对大家Python程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具下载学院APP
缓存视频离线看
Python算法实战视频课程--二叉树
适用人群: python初、中级程序员; 正在学习算法的同学。
2424小时内答疑
课时永久观看
退15分钟内无条件退款
仅限付费视频课程适用
购买后15分钟内可以找到客服进行沟通退款
退款将返还至51CTO学院账户,不支持提现
下载资料后不再享有退款特权
客服(Tel:400-101-1651)
最终解释权归51CTO学院所有
听APP缓存听课
倍PC倍速播放
加入购物车
 专题1 | Python算法实战视频课程(栈+队列+二叉树+图)
学习二叉树的基本概念,运用Python编码实现一些常见二叉树的基本算法。
python初、中级程序员; 正在学习算法的同学。
python技术交流群: 。老师为您解答问题,学习资料丰富多样。
暂时还没有学习资料~
好于0%的课程
课程与描述相符 5 非常满意
老师的讲解表达 5 非常满意
老师的答疑服务 5 非常满意
你可能还感兴趣的课程
8年编程开发经验,2年IT行业教学经验,,曾在清华大学信息技术中心及Freescale公司工作,SkyEye项目组成员之一
官方交流群
51CTO学院Python实战群()
3842人学习过
7日学霸榜 有3842人与你一起学习
加入购物车
综合评价在4颗星及以上最高可获得35分奖励
课程与描述相符
老师的讲解表达
老师的答疑服务
Copyright (C)没有更多推荐了,
不良信息举报
举报内容:
二叉树的深度[剑指offer]之python实现
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
python二叉树的实现实例
摘要:树的定义树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序时,可用树表示源程序的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述。树结构的特点是:它的每一个结点都可以有不止一个直接后继,除根结点外的所有结点都有且只有一个直接前驱。树
树的定义树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序时,可用树表示源程序的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述。树结构的特点是:它的每一个结点都可以有不止一个直接后继,除根结点外的所有结点都有且只有一个直接前驱。树的递归定义如下:(1)至少有一个结点(称为根)(2)其它是互不相交的子树二叉树: 二叉树是由n(n≥0)个结点组成的有限集合、每个结点最多有两个子树的有序树。它或者是空集,或者是由一个根和称为左、右子树的两个不相交的二叉树组成。
二叉树特点:(1)二叉树是有序树,即使只有一个子树,也必须区分左、右子树;(2)二叉树的每个结点的度不能大于2,只能取0、1、2三者之一;(3)二叉树中所有结点的形态有5种:空结点、无左右子树的结点、只有左子树的结点、只有右子树的结点和具有左右子树的结点。
二叉树基本的数据结构
#!/usr/bin/python# -*- coding: utf-8 -*-
class TreeNode(object):&&& def __init__(self,data,left,right):&&&&&&& self.data = data&&&&&&& self.left = left&&&&&&& self.right = right
class BTree(object):&&& def __init__(self,root=0):&&&&&&& self.root = root
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
为您提供0门槛上云实践机会
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
python二叉树的实现实例相关信息,包括
的信息,所有python二叉树的实现实例相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International

我要回帖

更多关于 python 二叉树的理解 的文章

 

随机推荐