二叉树的先序遍历和非递归遍历
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon May 13 15:48:30 2019@author: lg
"""class Node: def __init__(self,value=0,left=0,right=0): self.value=value self.left=left #左子树self.right=right #右子树def preTraverse(root): '''前序遍历'''#print('#'*6)if root==0:#print('这个节点的值是',root)return 9 print(root.value) preTraverse(root.left) preTraverse(root.right) def pre_order_recursion(root): #递归实现前序遍历if root==0:returnprint( root.value)pre_order_recursion(root.left)pre_order_recursion(root.right)def pre_order_stack(root): #堆栈实现前序遍历(非递归)if root.value==0:returnmyStack = []node = rootwhile myStack or node:while node: #从根节点开始,一直寻找他的左子树print (node.value)myStack.append(node)node = node.leftnode = myStack.pop() #while结束表示当前节点node为空,即前一个节点没有左子树了node = node.right #开始查看它的右子树if __name__ == '__main__':#主函数#逐个加入树的节点root=Node('D',Node('B',Node('A'),Node('C')),Node('E',Node('G'),Node('F')))print ('递归实现前序遍历:')pre_order_recursion(root)print( '\n堆栈实现前序遍历')pre_order_stack(root)
二叉树的先序遍历和非递归遍历相关推荐
- 二叉树先中后序递归遍历与非递归遍历、层次遍历
文章目录 1 先序遍历 1.1 先序遍历递归 1.2 先序遍历非递归 2 中序遍历 2.1 中序遍历递归 2.2 中序遍历非递归 3 后序遍历 3.1 后序遍历递归 3.2 后序遍历非递归 4 层序遍 ...
- 二叉树的链式结构的非递归遍历
二叉树的链式结构的非递归遍历 一. 非递归前序遍历和非递归中序遍历 1. Stack.h #ifndef__STACK_H__ #define__STACK_H__ #include<st ...
- C++-二叉树递归遍历与非递归遍历实现
-二叉树递归遍历与非递归遍历实现 引言 0 有关线性表结点定义-LinkNode 1 栈的链式存储结构实现-LinkedStack 2 队列的链式存储结构实现-LinkedQueue 3 二叉树的链式 ...
- 二叉树的递归遍历和非递归遍历实现(C++)(深度优先)
二叉树的递归遍历和非递归遍历(C++) 二叉树的遍历方式可分为先序遍历,中序遍历和后序遍历 先序遍历:先遍历根节点,再遍历左子节点,最后遍历右子节点. 中序遍历:先遍历左子节点,再遍历根节点,最后遍历 ...
- 二叉树的递归遍历及非递归遍历
二叉树的基本操作--创建.输出.查找.删除_yyy_zxc的博客-CSDN博客_二叉树的创建与输出创建二叉树过程:/*-----------第一轮循环:ch = A;p->data保存结点值b= ...
- 二叉树的递归遍历与非递归遍历
二叉树的遍历有递归与非递归两种方式,但思想大致相同 前序:先打印然后遍历完他的左子树,左子树为空时开始返回,并且开始以栈中元素为根遍历右子树 中序:先遍历左子树然后左子树入栈,左子树为空再打印,再遍历 ...
- 【数据结构】--- 二叉树的递归遍历和非递归遍历【C语言实现】
目录 1. 创建一颗二叉树 2.递归前序遍历二叉树 3.递归中序遍历二叉树 4.递归后序遍历二叉树 5. 测试递归打印二叉树代码 6. 非-递归前序遍历二叉树 7. 非-递归实现中序遍历二叉树 8. ...
- 冰冰学习笔记:二叉树的进阶OJ题与非递归遍历
欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正. 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬.帅哥.美女点点支 ...
- 二叉树创建,递归遍历,非递归遍历
二叉树 博主是一个大一刚刚放暑假的大学生,大学我们只学习了c语言,现在这么卷只学c语言肯定不够,所以博主打算从零开始恶补c++顺便写文章记录一下,另外博主这个暑假还想记录一些算法基础内容欢迎关注哦.这 ...
最新文章
- C# 程序员最常犯的 10 个错误
- 计算机硬盘冒烟了,电脑硬盘冒烟损坏了怎么办?
- 中国环境监测行业现状研究与投资规划分析报告2022-2028年
- Koa与Node.js开发实战(1)——Koa安装搭建(视频演示)
- C++对C的加强之register关键字增强
- ref是什么意思_终于有人说出A股不敢说的话:为什么股价不断下跌,大单却持续流入,你知道是什么缘由吗?...
- 小心使用tf.image.resize_images,填坑经验分享给你
- Intel VT-x 处于禁用解决方法
- python *args **kargs
- vSAN其实很简单-如何榨干vSAN的最后的空间- Part2(转)
- 大数据之-Hadoop3.x_MapReduce_自定义outputformat案例mapperreducer---大数据之hadoop3.x工作笔记0122
- vue ---- ref
- VS中项目的循环引用的问题
- weblogic apache 整合 代理
- 会议室管理系统源码分享-Spring mvc+mybatis+jpa+mysql+bootstrap
- 计算机键盘上fn键,键盘上的fn键有什么用?笔记本电脑键盘上的fn键作用大全
- ArchieOpenGL教程扩展一:修改背景色颜色
- win7安装JAVA程序闪退怎么办_win7打开软件闪退如何解决
- dev-c++输出的中文乱码
- JavaScript案例之抽奖机