前序 中序 后序 遍历 递归 非递归算法 java实现
前序遍历 非递归
- public void preordernorec(TreeNode root){
- //System.out.println("先序遍历(非递归):");
- //用数组模拟栈,假设有节点个数不超过32个
- TreeNode[] stack = new TreeNode[32];
- for(int i =0;i<32;i++){
- stack[i] = null;
- }
- int index =0;
- TreeNode pnode = root;
- while(pnode!=null||index>0){
- while(pnode!=null){
- System.out.print(pnode.getKey()+",");
- stack[index++] = pnode;
- pnode = pnode.getLeftchlid();
- }
- pnode = stack[--index];
- pnode = pnode.getRightchild();
- }
- //System.out.println("");
- }
前序遍历 递归
- public void preorder(TreeNode root){
- if(root!=null){
- System.out.print(root.getKey()+",");
- preorder(root.getLeftchlid());
- preorder(root.getRightchild());
- }
- }
中序遍历 非递归
- public void inordernorec(TreeNode root){
- TreeNode[] stack = new TreeNode[32];
- int index=0;
- for(int i =0;i<32;i++){
- stack[i] = null;
- }
- TreeNode pnode = root;
- while(pnode!=null||index>0){
- while(pnode!=null){
- stack[index++] = pnode;
- pnode = pnode.getLeftchlid();
- }
- pnode = stack[--index];
- System.out.print(pnode.getKey()+",");
- pnode = pnode.getRightchild();
- }
- //System.out.println("");
- }
中序遍历 递归
- public void inorder(TreeNode root){
- if(root!=null){
- inorder(root.getLeftchlid());
- System.out.print(root.getKey()+",");
- inorder(root.getRightchild());
- }
- }
后序遍历 非递归
- public void postordernorec(TreeNode root){
- TreeNode[] stack = new TreeNode[32];
- int index=0;
- for(int i =0;i<32;i++){
- stack[i] = null;
- }
- TreeNode pnode = root;
- TreeNode LastVisit = null;
- while(pnode!=null||index>0){
- while(pnode!=null){
- stack[index++] = pnode;
- pnode = pnode.getLeftchlid();
- }
- pnode=stack[index-1];
- if(pnode.getRightchild()==null||pnode.getRightchild()==LastVisit){
- System.out.print(pnode.getKey()+",");
- LastVisit = pnode;
- index--;
- pnode = null;
- }
- else
- {
- pnode = pnode.getRightchild();
- }
- }
- }
后序遍历 递归
- public void postorder(TreeNode root){
- if(root!=null){
- postorder(root.getLeftchlid());
- postorder(root.getRightchild());
- System.out.print(root.getKey()+",");
- }
- }
前序 中序 后序 遍历 递归 非递归算法 java实现的更多相关文章
- 二叉树(前序,中序,后序,层序)遍历递归与循环的python实现
二叉树的遍历是在面试使比较常见的项目了.对于二叉树的前中后层序遍历,每种遍历都可以递归和循环两种实现方法,且每种遍历的递归实现都比循环实现要简洁.下面做一个小结. 一.中序遍历 前中后序三种遍历方法对 ...
- 算法进阶面试题03——构造数组的MaxTree、最大子矩阵的大小、2017京东环形烽火台问题、介绍Morris遍历并实现前序/中序/后序
接着第二课的内容和带点第三课的内容. (回顾)准备一个栈,从大到小排列,具体参考上一课.... 构造数组的MaxTree [题目] 定义二叉树如下: public class Node{ public ...
- 二叉树 遍历 先序 中序 后序 深度 广度 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 前序+中序->后序 中序+后序->前序
前序+中序->后序 #include <bits/stdc++.h> using namespace std; struct node { char elem; node* l; n ...
- 给出 中序&后序 序列 建树;给出 先序&中序 序列 建树
已知 中序&后序 建立二叉树: SDUT 1489 Description 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历 Input 输入数据有多组,第一行是一个整数t (t& ...
- SDUT OJ 数据结构实验之二叉树八:(中序后序)求二叉树的深度
数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...
- SDUT-2804_数据结构实验之二叉树八:(中序后序)求二叉树的深度
数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 已知一颗二叉树的中序 ...
- 【C&数据结构】---关于链表结构的前序插入和后序插入
刷LeetCode题目,需要用到链表的知识,忽然发现自己对于链表的插入已经忘得差不多了,以前总觉得理解了记住了,但是发现真的好记性不如烂笔头,每一次得学习没有总结输出,基本等于没有学习.连复盘得机会都 ...
- 【11】-java递归和非递归二叉树前序中序后序遍历
二叉树的遍历 对于二叉树来讲最主要.最基本的运算是遍历. 遍历二叉树 是指以一定的次序访问二叉树中的每个结点.所谓 访问结点 是指对结点进行各种操作的简称.例如,查询结点数据域的内容,或输出它的值,或 ...
随机推荐
- HDU 1157 Who's in the Middle
#include <cstdio> #include <algorithm> using namespace std; int main() { int n; while(sc ...
- T-SQL函数及用法--转
转自http://www.cnblogs.com/qixuejia/archive/2010/07/14/1777105.html 1. 聚合函数 (1) AVG 函数功能返回组中值的平均值.空值将被 ...
- 二十三种设计模式及其python实现
本文源码寄方于github:https://github.com/w392807287/Design_pattern_of_python 参考文献: <大话设计模式>——吴强 <Py ...
- Python Extension Packages下载链接
一.http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载后可使用pip包管理器进行安装,在命令行中输入: pip install 安装包的路径
- 织梦dedecms|文章模型内容页标签
文章标题:{dede:field.title/}文章链接:{dede:field name='arcurl'/}发布时间:{dede:field.pubdate function="MyDa ...
- r语言之散点图绘制及参数
一个简单的例子: > plot(cars$dist~cars$speed,+ main="车位移与速度的关系",+ xlab="速度",+ ylab=&q ...
- [LeetCode]题解(python):009-Palindrome Number
题目来源: https://leetcode.com/problems/palindrome-number/ 题意分析: 这题是要判断一个int是否一个回文数,要求不能申请额外的空间. 题目思路: 这 ...
- asp.net 页面执行过程
Application_BeginRequest Application_AuthenticateRequest Application_AuthorizeRequest Application_Re ...
- 手把手教你图片转ASCII码图
效果图 基本思路 把图片每个像素点的信息拿出来,最重要的是拿到rgb的值 把每个像素点由rgb转成灰度图像,即0-255 给0-255分级,把每个等级的像素点转换成ascii码,完成 实现 第一步:获 ...
- How can you determine how much disk space a particular MySQL table is taking up?
http://stackoverflow.com/questions/6474591/how-can-you-determine-how-much-disk-space-a-particular-my ...