Python:二叉树遍历

article/2025/10/8 17:24:01

二叉树遍历共有四种方法,分别是前序遍历、中序遍历、后序遍历和层次遍历。

前序遍历: 父节点——左孩子——右孩子

中序遍历:左孩子——父节点——右孩子

后序遍历:左孩子——右孩子——父节点

层次遍历:利用队列解决,父节点出队,左右孩子进队

#二叉树遍历
#建立二叉树
from collections import deque
class Tree():def __init__(self,data):self.data=dataself.lchild=Noneself.rchild=Nonea=Tree("A")
b=Tree("B")
c=Tree("C")
d=Tree("D")
e=Tree("E")
f=Tree("F")
g=Tree("G")e.lchild=a
e.rchild=g
a.rchild=c
c.lchild=b
c.rchild=d
g.rchild=f#第一种方法:前序遍历
def pre_read(root):if root:print(root.data,end=' ')pre_read(root.lchild)pre_read(root.rchild)
print("1.前序遍历")
pre_read(e)
##第二种方法:中序遍历
def mid_read(root):if root:mid_read(root.lchild)print(root.data,end=' ')mid_read(root.rchild)
print("\n2.中序遍历")
mid_read(e)
#第三种方法:后序遍历
def back_read(root):if root:back_read(root.lchild)back_read(root.rchild)print(root.data,end=' ')
print("\n3.后序遍历")
back_read(e)
##第四种方法:层次遍历
##利用队列解决,父节点出队,左右孩子进队】
def cengci_read(root):queue=deque()if root:queue.append(root)while len(queue)>0:node=queue.popleft()print(node.data,end=' ')if node.lchild:queue.append(node.lchild)if node.rchild:queue.append(node.rchild)
print("\n层次遍历")
cengci_read(e)


http://chatgpt.dhexx.cn/article/FRrjo59D.shtml

相关文章

【算法】二叉树遍历的几种常见方法

二叉树遍历的几种常见方法 一. 二叉树分类: 完全二叉树满二叉树扩充二叉树平衡二叉树 二. 二叉树的四种遍历方式: 前序遍历(先根,再左,最后右)中序遍历(先左,再根,最…

二叉树遍历的非递归算法

非递归的算法主要采用的是循环出栈入栈来实现对二叉树的遍历,下面是过程分析 以下列二叉树为例:(图片来自懒猫老师《数据结构》课程相关内容) 1.前序遍历 前序遍历的顺序为:根结点->左子树->右子树 基本过程&a…

二叉树的中序遍历算法

一,简介 二叉树的中序遍历在计算机行业有着重要的作用,其中一个应用就是判断一棵二叉树是否二叉排序树。 下面介绍递归和非递归两种方式实现中序遍历。 二,递归实现 递归实现非常简单,左根右依次进行即可。 void mid_scan2(n…

JavaScript算法 — 二叉树遍历

目录 1、构造二叉树2、递归遍历3、非递归遍历3.1 先序3.2 中序3.3 后序 1、构造二叉树 树节点: // 二叉树节点的构造函数 function TreeNode(val, left, right) {this.val (valundefined ? 0 : val)this.left (leftundefined ? null : left)this.right (righ…

二叉树遍历算法之一:前序遍历

递归实现前序遍历 二叉树的前序遍历是指从根节点出发,按照先根节点,再左子树,后右子树的方法遍历二叉树中的所有节点,使得每个节点都被访问一次。 当调用遍历算法的时候前序遍历的具体过程如下: 首先访问根节点&…

二叉树遍历小结

前言 二叉树是相当重要的数据结构,目前我还只会玩玩它的遍历(年轻不懂事没好好学,不然早就达到人生巅峰了),LeetCode上二叉树的简单题,大部分通过遍历加一点小逻辑即可解决,所以总结一下几种遍…

二叉树遍历之层次遍历算法入门详解

一、引言 二叉树的遍历常见的方法有先序遍历、中序遍历、后序遍历和层次遍历等,本文给出了C语言版本的层次遍历二叉树的算法。 层次遍历的原理很简单,总结为一句话就是“从上到下,从左到右”,就是从树根开始逐层访问二叉树的结点&…

二叉树的四种遍历算法

二叉树作为一种重要的数据结构,它的很多算法的思想在很多地方都用到了,比如STL算法模板,里面的优先队列、集合等等都用到了二叉树里面的思想,先从二叉树的遍历开始: 看二叉树长什么样子: 我们可以看到这颗…

实现二叉树各种遍历算法

目录 前言一、题目1.二叉树的各种遍历过程及遍历算法设计。2.实现二叉树各种遍历算法 总结 前言 提示:记得关注我哦!!! 一、题目 1.二叉树的各种遍历过程及遍历算法设计。 (1) 先序遍历二叉树&#xff1…

算法分析之二叉树遍历

算法相关数据结构总结: 序号数据结构文章1动态规划动态规划之背包问题——01背包 动态规划之背包问题——完全背包 动态规划之打家劫舍系列问题 动态规划之股票买卖系列问题 动态规划之子序列问题 算法(Java)——动态规划2数组算法分析之数…

二叉树遍历算法总结

A. 二叉树的遍历 1.前序遍历二叉树: (1)若二叉树为空,则为空操作,返回空。 (2)访问根结点。 (3)前序遍历左子树。 (4)前序遍历右子树。 a.二叉树前序遍历的递归算法: void PreOrderTraverse(BiTree BT)…

二叉树的遍历算法

遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有节点,使每一个节点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个节…

【算法】二叉树遍历算法总结:前序中序后序遍历

前言 二叉树遍历是非常经典的算法题,也是二叉树的一道基础算法题。 但是在平常的笔试面试中,其出现的频率其实并不是特别的高,我推测是这种题目相对来说比较基础,算是一个基础知识点。 比如剑指offer中出现的后序遍历题目&…

二叉树遍历算法的应用

目录 一、二叉树遍历算法的应用——二叉树的创建 二、二叉树遍历算法的应用——复制二叉树 三、二叉树遍历算法的应用——计算二叉树的深度 四、二叉树遍历算法的应用——计算二叉树节点总数 五、二叉树遍历算法的应用——计算二叉树叶子节点数 一、二叉树遍历算法的应用—…

一文弄懂二叉树的三种遍历方式

关注公众号【高性能架构探索】,后台回复【pdf】,免费获取计算机必备经典书籍 俗话说:学如逆水行舟,不进则退;心似平原走马,易放难收。这句话对程序员而言,体会更深。这行已经越来越卷了,时刻准备着,&#x…

二叉树遍历算法

目录 先序遍历 中序遍历 后序遍历 层序遍历 938. 二叉搜索树的范围和 110. 平衡二叉树 114. 二叉树展开为链表 117. 填充每个节点的下一个右侧节点指针 II 116. 填充每个节点的下一个右侧节点指针 1,三种遍历都是先把二叉树的最左结点循环入栈(DFS迭代)&am…

二叉树的四种遍历算法(结构体数组)

一、二叉树的定义 以字符串的形式定义一棵二叉树的先序序列,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。 例:ABDG##HI####CE#J##F## 对应的二叉树: 思路讲解: 想要遍历二叉树&am…

二叉树的四种遍历方式

概要 树本身是一种简单化的图 ; DFS对应前中后序遍历,BFS对应层序遍历 二叉树结构 struct treenode {int val;treenode *left;treenode *right;treenode() : val(0), left(nullptr), right(nullptr) {}treenode(int x) : val(x), left(nullptr), right(n…

针对Linux学习,值得阅读的五本书籍,不看可能错失机会

今天为了总结一些可以帮助各位在学习过程中提供帮助的一些书籍。 一.鸟叔的私房菜: 本书是知名度颇高的Linux入门书《鸟哥的Linux私房菜基础学习篇》的新版,而详细地介绍了Linux操作系统。全书分为五部分;第一部分部分着重说明计算机的基础知识、Linux的学习方法&a…

从零开始学习Linux(一)关闭虚拟机系统

关闭系统,需要输入如下命令 poweroff然而,你只能得到如下反馈 -bash: poweroff:command not found此项错误是因为poweroff命令是一个系统管理命令。执行此项命令需要高级使用者特权。 因此,为了关闭系统,我们首先需要切换到root…