#!/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 先序遍历递归 1.2 先序遍历非递归 2 中序遍历 2.1 中序遍历递归 2.2 中序遍历非递归 3 后序遍历 3.1 后序遍历递归 3.2 后序遍历非递归 4 层序遍 ...

  2. 二叉树的链式结构的非递归遍历

    二叉树的链式结构的非递归遍历 一. 非递归前序遍历和非递归中序遍历 1.    Stack.h #ifndef__STACK_H__ #define__STACK_H__ #include<st ...

  3. C++-二叉树递归遍历与非递归遍历实现

    -二叉树递归遍历与非递归遍历实现 引言 0 有关线性表结点定义-LinkNode 1 栈的链式存储结构实现-LinkedStack 2 队列的链式存储结构实现-LinkedQueue 3 二叉树的链式 ...

  4. 二叉树的递归遍历和非递归遍历实现(C++)(深度优先)

    二叉树的递归遍历和非递归遍历(C++) 二叉树的遍历方式可分为先序遍历,中序遍历和后序遍历 先序遍历:先遍历根节点,再遍历左子节点,最后遍历右子节点. 中序遍历:先遍历左子节点,再遍历根节点,最后遍历 ...

  5. 二叉树的递归遍历及非递归遍历

    二叉树的基本操作--创建.输出.查找.删除_yyy_zxc的博客-CSDN博客_二叉树的创建与输出创建二叉树过程:/*-----------第一轮循环:ch = A;p->data保存结点值b= ...

  6. 二叉树的递归遍历与非递归遍历

    二叉树的遍历有递归与非递归两种方式,但思想大致相同 前序:先打印然后遍历完他的左子树,左子树为空时开始返回,并且开始以栈中元素为根遍历右子树 中序:先遍历左子树然后左子树入栈,左子树为空再打印,再遍历 ...

  7. 【数据结构】--- 二叉树的递归遍历和非递归遍历【C语言实现】

    目录 1. 创建一颗二叉树 2.递归前序遍历二叉树 3.递归中序遍历二叉树 4.递归后序遍历二叉树 5. 测试递归打印二叉树代码 6. 非-递归前序遍历二叉树 7. 非-递归实现中序遍历二叉树 8.  ...

  8. 冰冰学习笔记:二叉树的进阶OJ题与非递归遍历

    欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正. 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬.帅哥.美女点点支 ...

  9. 二叉树创建,递归遍历,非递归遍历

    二叉树 博主是一个大一刚刚放暑假的大学生,大学我们只学习了c语言,现在这么卷只学c语言肯定不够,所以博主打算从零开始恶补c++顺便写文章记录一下,另外博主这个暑假还想记录一些算法基础内容欢迎关注哦.这 ...

最新文章

  1. C# 程序员最常犯的 10 个错误
  2. 计算机硬盘冒烟了,电脑硬盘冒烟损坏了怎么办?
  3. 中国环境监测行业现状研究与投资规划分析报告2022-2028年
  4. Koa与Node.js开发实战(1)——Koa安装搭建(视频演示)
  5. C++对C的加强之register关键字增强
  6. ref是什么意思_终于有人说出A股不敢说的话:为什么股价不断下跌,大单却持续流入,你知道是什么缘由吗?...
  7. 小心使用tf.image.resize_images,填坑经验分享给你
  8. Intel VT-x 处于禁用解决方法
  9. python *args **kargs
  10. vSAN其实很简单-如何榨干vSAN的最后的空间- Part2(转)
  11. 大数据之-Hadoop3.x_MapReduce_自定义outputformat案例mapperreducer---大数据之hadoop3.x工作笔记0122
  12. vue ---- ref
  13. VS中项目的循环引用的问题
  14. weblogic apache 整合 代理
  15. 会议室管理系统源码分享-Spring mvc+mybatis+jpa+mysql+bootstrap
  16. 计算机键盘上fn键,键盘上的fn键有什么用?笔记本电脑键盘上的fn键作用大全
  17. ArchieOpenGL教程扩展一:修改背景色颜色
  18. win7安装JAVA程序闪退怎么办_win7打开软件闪退如何解决
  19. dev-c++输出的中文乱码
  20. JavaScript案例之抽奖机

热门文章

  1. 好好学python·运算符和流程控制
  2. JHipster生成微服务架构的应用栈(三)- 业务微服务示例
  3. 授权公钥登录,sudo权限脚本
  4. LC #134 JS
  5. 二维树状数组 BZOJ 1452 [JSOI2009]Count
  6. liunx 分割合并文件
  7. flash _currentframe+指定帧步 控制线程
  8. WPA/WPA2安全认证加密原理详解
  9. secureCRT上打印乱码的一种起因
  10. 关于source insight 3.5 无法同步文件的问题