首页 > 编程语言 >Python数据结构与算法06——树与树算法

Python数据结构与算法06——树与树算法

时间:2024-02-03 17:14:07浏览次数:36  
标签:node None 06 cur Python self tree 算法 travel

二叉树

class Node(object):
    def __init__(self,val,lchild=None,rchild=None):
        self.val=val
        self.lchild=lchild
        self.rchild=rchild

class Tree(object):
    def __init__(self):
        self.root=None

    def add(self,item):
        node=Node(item)
        if self.root==None:
            self.root=node
            return
        queue=[self.root]
        while queue:
            cur_node=queue.pop(0)
            if cur_node.lchild==None:
                cur_node.lchild=node
                return
            else:
                queue.append(cur_node.lchild)
            if cur_node.rchild==None:
                cur_node.rchild=node
                return
            else:
                queue.append(cur_node.rchild)
    def breadth_travel(self):
        if self.root==None:
            print('NULL')
            return
        queue=[self.root]
        while queue:
            cur_node = queue.pop(0)
            print(cur_node.val, end=' ')
            if cur_node.lchild!=None:
                queue.append(cur_node.lchild)
            if cur_node.rchild!=None:
                queue.append(cur_node.rchild)

    def preorder_travel(self,node):
        if node==None:
            return
        print(node.val,end=' ')
        self.preorder_travel(node.lchild)
        self.preorder_travel(node.rchild)

    def inorder_travel(self,node):
        if node==None:
            return
        self.inorder_travel(node.lchild)
        print(node.val, end=' ')
        self.inorder_travel(node.rchild)
    def postorder_travel(self,node):
        if node==None:
            return
        self.postorder_travel(node.lchild)
        self.postorder_travel(node.rchild)
        print(node.val, end=' ')




tree=Tree()
tree.add(0)
tree.add(1)
tree.add(2)
tree.add(3)
tree.add(4)
tree.add(5)
tree.add(6)
tree.add(7)
tree.add(8)
tree.add(9)
tree.breadth_travel()
print(' ')
tree.preorder_travel(tree.root)
print(' ')
tree.inorder_travel(tree.root)
print(' ')
tree.postorder_travel(tree.root)

 

标签:node,None,06,cur,Python,self,tree,算法,travel
From: https://www.cnblogs.com/yyyjw/p/18004943

相关文章

  • [算法学习笔记] 欧拉路
    免责声明:本文定义并不严谨,笔者是从“浅显易懂”的角度出发写本文。若您需要严谨定义请移步至其他学术文章。基本定义欧拉路径,即能不重不漏经过图上所有边的路径。也可以说“一笔画问题”。特殊地,如果这条路径的起点和终点一致,则这条路径叫做“欧拉回路”。其他的定义:欧拉图......
  • 基础算法(十一)二维差分---以题为例
    输入一个 n 行 m 列的整数矩阵,再输入 q 个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1)和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上 c。请你将进行完所有操作后的矩阵输出。输入格式第一行包含整......
  • 求最大数字-od-python
    求最大数字题目给定一个由纯数字组成以字符串表示的数值,现要求字符串中的每个数字最多只能出现2次,超过的需要进行删除;删除某个重复的数字后,其它数字相对位置保持不变。如34533,数字3重复超过2次,需要删除其中一个3,删除第一个3后获得最大数值4533请返回经过删除操作......
  • 【Python基础】日志工具介绍及使用
    日志的主要功能日志不是软件功能的必需品,但是对于软件开发和维护具有至关重要的作用,其主要的作用在于:问题追踪和调试:当程序出现错误或异常行为时,日志可以提供关于何时以及在哪里发生问题的详细信息,对于识别、隔离和修复错误很有帮助。审计和合规性:提供详细的操作记录,用于证......
  • Python小白入门指南:从零开始掌握Python编程
    你是否曾想过用代码操控电脑、制作自动化任务,或者探索数据的奥秘?今天,我要带你进入Python的世界,为你揭开编程的神秘面纱。不论你是编程零基础,还是想学习一门新技能,这篇文章都将是你学习Python的得力助手。一、Python是什么?为什么要学Python?Python是一种高级、动态类型的编程语言,它的......
  • 代码随想录算法训练营第十一天| 20. 有效的括号 1047. 删除字符串中的所有相邻重复
    20.有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。题目链接:20.有效的括号-力扣(LeetCode)思路:只......
  • 2024牛客寒假算法基础集训营1
    题目链接A.因为判断要素较少,直接条件模拟#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=2e5+10;voidsolve(){intn;cin>>n;strings;cin>>s;intD=0,F=0,S=0,d=0,f=0,ss=0;for(inti=0;i<s.size();i++){......
  • Python 数据分析(PYDA)第三版(二)
    原文:wesmckinney.com/book/译者:飞龙协议:CCBY-NC-SA4.0四、NumPy基础知识:数组和向量化计算原文:wesmckinney.com/book/numpy-basics译者:飞龙协议:CCBY-NC-SA4.0此开放访问网络版本的《Python数据分析第三版》现已作为印刷版和数字版的伴侣提供。如果您发现任何勘误......
  • Python 数据分析(PYDA)第三版(三)
    原文:wesmckinney.com/book/译者:飞龙协议:CCBY-NC-SA4.0六、数据加载、存储和文件格式原文:wesmckinney.com/book/accessing-data译者:飞龙协议:CCBY-NC-SA4.0此开放访问网络版本的《Python数据分析第三版》现已作为印刷版和数字版的伴侣提供。如果您发现任何勘误,请在......
  • 算法入门:排序算法
    文章目录1.冒泡排序2.选择排序3.插入排序4.希尔排序5.归并排序6.快速排序7.堆排序 1.冒泡排序思想:比较相邻元素:从数组的第一个元素开始,比较相邻的两个元素,如果它们的顺序不对(比如前面的元素大于后面的元素),则交换它们的位置。一轮遍历:一轮比较和可能的交换后,最......