二叉树的DPS以及BPS
深度优先搜索(Depth First Search):
前序遍历:
class BinaryTree:def __init__(self, value):self.value = valueself.left = Noneself.right = Nonebtree = BinaryTree(3)
btree.left = BinaryTree(4)
btree.right = BinaryTree(5)
btree.left.right = BinaryTree(6)
btree.right.left = BinaryTree(9)def preorder_traversal(node, res=list()):if node is None:returnres.append(node.value)preorder_traversal(node.left)preorder_traversal(node.right)return resprint(preorder_traversal(btree))
中序遍历:
class BinaryTree:def __init__(self, value):self.value = valueself.left = Noneself.right = Nonebtree = BinaryTree(3)
btree.left = BinaryTree(4)
btree.right = BinaryTree(5)
btree.left.right = BinaryTree(6)
btree.right.left = BinaryTree(9)def inorder_traversal(node, res=list()):if node is None:returninorder_traversal(node.left)res.append(node.value)inorder_traversal(node.right)return resprint(inorder_traversal(btree))
后序遍历:
class BinaryTree:def __init__(self, value):self.value = valueself.left = Noneself.right = Nonebtree = BinaryTree(3)
btree.left = BinaryTree(4)
btree.right = BinaryTree(5)
btree.left.right = BinaryTree(6)
btree.right.left = BinaryTree(9)def postorder_traversal(node, res=list()):if node is None:returnpostorder_traversal(node.left)postorder_traversal(node.right)res.append(node.value)return resprint(postorder_traversal(btree))
广度优先搜索(Breadth First Search):
层次遍历:
class BinaryTree:def __init__(self, value):self.value = valueself.left = Noneself.right = Nonebtree = BinaryTree(3)
btree.left = BinaryTree(4)
btree.right = BinaryTree(5)
btree.left.right = BinaryTree(6)
btree.right.left = BinaryTree(9)def level_traversal(node):if node is None:returnres = list()tmp_queue = list()tmp_queue.append(node)while tmp_queue:node = tmp_queue.pop(0)res.append(node.value)if node.left is not None:tmp_queue.append(node.left)if node.right is not None:tmp_queue.append(node.right)return resprint(level_traversal(btree))
二叉树的DPS以及BPS相关推荐
- linux系统CPU,内存,磁盘,网络流量监控脚本
前序 1, #cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2, #vmstat –s 或者 #vmstat 虚拟内存统 ...
- Leetcode 103.二叉树的锯齿形层序遍历
难度:中等 频率:136 题目: 给定一个二叉树,返回其节点值的锯齿形层序遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 解题方法:改进的BPS[广度优先搜索] BP ...
- 【树形区间DP】加分二叉树(ssl 1033/luogu 1040)
加分二叉树 ssl 1033 luogu 1040 题目大意: 有一棵中序遍历为1,2,3-n的二叉树(当然二叉树的样子没有固定),现在给出每个节点的分数,一个节点的加数=两个子节点的加数相乘+当前节 ...
- 二叉树的前序、中序、后序非递归遍历 python实现
前言 python中二叉树的定义: class TreeNode:def __init__(self, x):self.val = xself.left = Noneself.right = None ...
- 二叉树中和为某一值的路径
前言 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大的数 ...
- 判断某数组是不是二叉树的前序遍历序列 python递归
code class Solution:def VerifySquenceOfBST(self, sequence):# write code hereif len(sequence) <= 0 ...
- 翻转二叉树 c语言实现 递归 栈 队列
前言 题目比较好理解,就是翻转二叉树 代码 c语言实现 #include<stdio.h> #include<stdlib.h> #include<string.h> ...
- python实现二叉树的重建2 之由中序遍历和后序遍历重建
前言 通过上一节对python实现二叉树的重建1 之由前序遍历和中序遍历重建,我相信我们再来做这个问题就不难了,完全可以照猫画虎的来实现,具体的原理几乎是一样的,直接上代码了 code # 通用解法d ...
- 通过前序遍历和中序遍历构建二叉树 python实现
前言 通过前序遍历和中序遍历构建二叉树的原理,主要是找前序遍历根节点在中序遍历中的位置,然后将二叉树而成左子树和右子树,然后依次进行这样的操作,思路还是比较简单的 代码 class Node:def ...
最新文章
- 深度学习“四大名著”发布!Python、TensorFlow、机器学习、深度学习四件套(附免费下载)...
- HSV颜色空间 HSV空间各通道分离实验
- NetScaler SDWAN 详细配置手册
- PHP框架的ORM思想:O类的实例化 R数据表 M映射XML
- 技术干货|基于Apache Hudi 的CDC数据入湖「内附干货PPT下载渠道」
- hexo+github 一小时搭建个人博客
- 华为仿苹果字体_苹果手机和华为手机,同样的网络下为何我的手机网速这么差?...
- Codis安装部署全架构
- Insert Node in Sorted Linked List
- matlab朦胧的去雾、加雾算法
- 大数据导论答案_《数据科学与大数据通识导论》题库及答案
- python自动生成文章原创_【Python】皮皮AI工具( AI文章伪原创工具)
- 为什么下载小电影时,经常会卡在 99%?
- C/C++ 内存对齐原则及作用
- Facebook想要成为下一个微信,难!
- 《人类简史》--摘录
- document.write
- display与visibility可见性、内补白与外补白
- 电脑软件测试英雄联盟,lol电脑配置检测,如何测试自己的网络玩lol的具体情况?...
- TTL,Mipi, LVDS和EDP接口区别
热门文章
- PPT幻灯片排列式图片封面页制作
- springboot实现增量备份_增量同步-spring batch(6)动态参数绑定与增量同步
- 百度NLP面试记录(实习offered)
- 北京联合大学提前批计算机科学与技术,首都师范大学和北京联合大学首次在提前批招师范生...
- はち:Tabu Search
- 决定镜片厚度的只有度数
- 经典蓝牙与低功耗蓝牙BLE开发基础知识:服务、特征、属性、UUID
- MySQL基础语法总结
- The Tomcat connector configured to listen on port 10000 failed to start. The port may already be in
- 古月居ROS入门21讲-坐标系管理