树的前序,中序,后序遍历的递归以及非递归实现
2017-01-10 18:27
204 查看
之前只会树的前序,中序,后序遍历的递归实现。今天主要是总结非递归实现。
先把递归实现的前中后遍历写一遍,节点的定义就省略不写了。
//前序遍历
public static void preTraversal(Node root){
if(root!=null){
System.out.print(root.value+" ");
preTraversal(root.left);
preTraversal(root.right);
}
}
//中序遍历
public static void inTraversal(Node root){
if(root!=null){
inTraversal(root.left);
System.out.print(root.value+" ");
inTraversal(root.right);
}
}
//后序遍历
public static void lastTraversal(Node root){
if(root!=null){
lastTraversal(root.left);
lastTraversal(root.right);
System.out.print(root.value+" ");
}
}
树的递归遍历非常简单,主要介绍非递归遍历.(树的深度优先遍历分为先序,中序,后序三种)
非递归先序遍历
public static void iterativePreorder(Node root){
Stack<Node> stack = new Stack<Node>();
if(root!=null){
stack.push(root);
while(stack.size()!=null){
root = stack.pop();
System.out.print(root.value);
if(root.right!=null){
stack.push(root.right);
}
if(root.left!=null){
stack.push(root.left);
}
}
}
}
非递归中序遍历
继续更新
先把递归实现的前中后遍历写一遍,节点的定义就省略不写了。
//前序遍历
public static void preTraversal(Node root){
if(root!=null){
System.out.print(root.value+" ");
preTraversal(root.left);
preTraversal(root.right);
}
}
//中序遍历
public static void inTraversal(Node root){
if(root!=null){
inTraversal(root.left);
System.out.print(root.value+" ");
inTraversal(root.right);
}
}
//后序遍历
public static void lastTraversal(Node root){
if(root!=null){
lastTraversal(root.left);
lastTraversal(root.right);
System.out.print(root.value+" ");
}
}
树的递归遍历非常简单,主要介绍非递归遍历.(树的深度优先遍历分为先序,中序,后序三种)
非递归先序遍历
public static void iterativePreorder(Node root){
Stack<Node> stack = new Stack<Node>();
if(root!=null){
stack.push(root);
while(stack.size()!=null){
root = stack.pop();
System.out.print(root.value);
if(root.right!=null){
stack.push(root.right);
}
if(root.left!=null){
stack.push(root.left);
}
}
}
}
非递归中序遍历
继续更新
相关文章推荐
- c++实现二叉树的非递归创建以及非递归先序、中序、后序遍历
- 二叉树的创建,先序、中序、后序遍历的递归实现以及层序遍历
- python实现二叉树的建立以及遍历(递归前序、中序、后序遍历,队栈前序、中序、后序、层次遍历)
- 二叉树构建,先序,中序,后序遍历(以及非递归实现),广度优先遍历
- 二叉树构建,先序,中序,后序遍历(以及非递归实现),广度优先遍历
- 二叉树构建,先序,中序,后序遍历(以及非递归实现),广度优先遍历
- 二叉树的建立以及前序、中序、后序遍历的递归和非递归实现
- 二叉树的遍历:前序,中序,后序,层序--包括递归和非递归实现(转)
- 数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 二叉树的非递归前序、中序以及后序遍历C++模版类实现
- 二叉树先序,中序,后序遍历非递归实现
- [转]非递归实现二叉树的前序,中序,后序遍历
- 前序 中序 后序 遍历 递归 非递归算法 java实现
- 二叉树的遍历:前序、中序、后序、层序的非递归实现
- 二叉树前序、中序、后序遍历的递归与非递归算法实现
- 二叉树的创建以及利用迭代实现中序、先序、后序遍历、清空
- 前序、中序、后序遍历的多种非递归实现
- 二叉树的遍历;前序 中序 后序遍历二叉树;递归 非递归实现; 重建二叉树;编程之美重建二叉树
- 前序、中序、后序遍历的多种非递归实现
- 二叉树先序,中序,后序遍历非递归实现