Python实现一个二叉树类

利用Python创建二叉树 记录下用Python如何创建一个二叉树 1.一个节点,为每一个节点都赋予左右孩子的属性,然后后续才能往下添加节点 class Node(object): def __init__(self, number): self.number = number self.left = None self.right = None 2.建立二叉树... 阅读详情

最近在学习Python,之前只是在写脚本,做一些数据处理的工作,今天开始看Python的面向对象,熟悉了语法之后,想实现一个二叉树类练练手。

以前写C++比较多,用Python写二叉树好不习惯,没有指针,没有引用!!!


所以我就遇到了一下几个问题:

1、该怎么把二叉树各个节点连起来?

2、怎么定义内部数据成员?

3、如何实例化左右孩子?


在网上也没找到比较简单比较通用的Python二叉树类实现,所以我花了点时间自己写一个。

class Tree:
    def __init__(self, val = '#', left = None, right = None):
        self.val = val
        self.left = left
        self.right = right

    #前序构建二叉树
    def FrontBuildTree(self):
        temp = input('Please Input: ')
        node = Tree(temp)
        if(temp != '#'):
            node.left = self.FrontBuildTree()
            node.right = self.FrontBuildTree()
        return node#因为没有引用也没有指针,所以就把新的节点给返回回去
    
    #前序遍历二叉树
    def VisitNode(self):
        print(self.val)
        if(self.val != '#'):
            self.left.VisitNode()
            self.right.VisitNode()

if __name__ == '__main__':
    root = Tree()
    root = root.FrontBuildTree()
    root.VisitNode()

有什么不对的地方,还请多指教!
C语言实现数据结构:二叉树 实现以下算法: 1.以二叉链表表示二叉树,根据输入建立一棵二叉树; 2.输出二叉树的先序遍历结果; 3.输出二叉树的中序遍历结果; 4.输出二叉树的后序遍历结果。 求二叉树第k层结点的个数。 利用二叉树计算表达式的值。建立表达式树,并计算表达式的值。 阅读详情

相关推荐

python学习之二叉树实现详解

insert方法用于向二叉树中插入节点,find方法用于查找二叉树中是否存在特节点,inorder_traversal方法用于对二叉树进行中序遍历。在上述代码中,首先创建了一个节点root,然后使用insert方法向树中插入节点,最后使用find方法查找节点并使用inorder_traversal方法对二叉树进行中序遍历。除了插入、查找和遍历方法,二叉树还有其他的操作方法,如删除节点、判断是否为二叉搜索树、计算树的深度等。这个示例包含了插入、查找、删除、遍历、判断是否为二叉搜索树和计算树的深度等。

分享型博主 4271

python实现二叉树

首先我们先介绍数的概念。结点:使用树结构存储的每一个数据元素都被称为“结点”。例如,图 1(A)中,数据元素 A 就是一个结点;父结点(双亲结点)、子结点和兄弟结点:对于图 1(A)中的结点 A、B、C、D 来说,A 是 B、C、D 结点的父结点(也称为“双亲结点”),而 B、C、D 都是 A 结点的子结点(也称“孩子结点”)。对于 B、C、D 来说,它们都有相同的父结点,所以它们互为兄弟结点。树根结点(简称“根结点”):每一个非空树都有且只有一个被称为根的结点。图 1(A)中,结点A就是整棵树的根结点。叶

cjzcc1996的博客 5926

Python语言建立二叉树的几种方式(适用于需要建树的场景)

Python语言建立二叉树的几种方式(适用于需要建树的场景)

化身孤岛的鲸o的博客 8648

二叉树Python实现

二叉树(Binary Tree)是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。图6-5-2就是一棵二叉树。而图6-2-1的树,因为D结点有三个子树,所以它不是二叉树

龙晨天的博客 2159

数据结构、Python——实现一个Python风格的简单二叉树类,支持先中后层序遍历以及根据遍历重建二叉树方法

简介 简单的二叉数,支持结构化字符串和中序遍历+任意一种其他遍历方式来建立一颗Python风格的二叉树。所谓结构化字符串,即以ROOT[(LEFT[,RIGHT])]来表示一个节点和其左右子树结构,无右子树可省略逗号,无子树可省略括号,如0(1(,2),3(4,5(6(7,8),9)))中根节点为0,左子树为1(,2),右子树为3(4,5(6(7,8),9))。结构如下: 代码 测试代码 测试效果 ...

Eyizoha的博客 287

python实现抽象数据型=>二叉树

【代码】python实现抽象数据型=>二叉树

李小小小白的博客 241

python从键盘上输入一组数据,建立一个以二叉链表形式存储的二叉树。对所建立的二叉树分别进行先序、中序和后序遍历,并输出结果。

【代码】python从键盘上输入一组数据,建立一个以二叉链表形式存储的二叉树。对所建立的二叉树分别进行先序、中序和后序遍历,并输出结果。

m0_62027222的博客 1079

python算法】二叉树的先序中序后序遍历

#coding=utf-8 #二叉树的遍历 #节点 class TreeNode: def __init__(self,val,left=None,right=None): self.val = val self.left = left self.right = right #二叉树类 class BinaryTree: def __init__(self,root=N...

qq_30758629的博客 501

二叉树的广度优先遍历策略详解

③若队列非空, 则队头节点出队, 访问该节点, 并将其左、右孩子树插入队尾(如果有的话)2)Step2: 一个二叉树类, 并义广度优先遍历的方法.3)Step3: 在main函数中, 完成测试.1) Step1: 先一个节点。①初始化一个辅助队列(先进先出)

weixin_71405027的博客 841

算法题:python括号法反序列构造二叉树

【代码】算法题:python括号法反序列构造二叉树

weixin_43978703的博客 348

数据结构 树的链表实现

【代码】数据结构 树的链表实现

weixin_49238668的博客 209

Python二叉树的建立与解题源码

题目 源码 # coding = utf-8 class Node(): def __init__(self, name): self.name = int(name) self.data = None self.left = None self.right = None class BinaryTree(): ...

qq_43029747的博客 180

python21_面向对象编程 项目案例:二叉树的封装

二叉树的理解 二叉树的理解 二叉树实现 思路 封装节点 封装二叉树 实现先序遍历 基本思想:先访问根结点,再先序遍历左子树,最后再先序遍历右子树即根—左—右。 代码 class Node(object): """封装 节点""" def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right c

weixin_47133613的博客 582

二叉树原理

class Btree:    def __init__(self, value):        self.left = None        self.data = value        self.right = None    def insertLeft(self, value):        self.left = Btree(value)        return self....

mk_csdn的博客 333

python深度优先搜索二叉树_Python 广度优先/深度优先遍历二叉树

# -*- coding: utf-8 -*-# author: zhonghua# filename: breadth_depth_tree.py# create: 2016/3/31# version: 1.0# 广度优先/深度优先遍历二叉树class Node:def __init__(self, data, left, right):self._data = dataself._left ...

weixin_29464593的博客 333

打印二叉搜索树的叶子结点_七十六、 数据结构二叉树及其代码实现

「@Author:Runsen」❝编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化。「---- Runsen」❞树树是一种非常重要的非线性结构,本身具有递归的性质(在其后的编程中体现的淋漓尽致)。看下图,A 节点就是 B 节点的父节点,B 节点是 A 节点的子节点。B、C、D 这三个节点的父节点是同一个节点A,没有父节点的叫做根节点,也就是 E 。没有子节点的节...

weixin_27021789的博客 206

二叉树 四则运算 中序转后序 实现 java_重学数据结构之树和二叉树

一、树和森林1.基本概念树状图(Tree)又称为树,是一种复杂的数据结构。树是由 n(n>=0)个有限节点组成一个具有层次关系的集合,把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。当 n=0 时,称之为空树,否则是非空树。树具有以下的特点:每个节点有零个或多个子节点;没有父节点节点称为根节点;每一个非根节点有且只有一个节点;除了根节点外,每个子节点可以分为多...

weixin_32637683的博客 524
上一篇: 循环移位(翻转算法)
下一篇: Python实现二叉树存储结构的堆排序
yk_ee
博客等级 码龄10年 6粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值