非递归的二叉树遍历(Java实现)
2016-09-22 00:00
393 查看
Ⅰ先序遍历:
Ⅱ.中序遍历:
Ⅲ.后序遍历:
Ⅳ.层序遍历:
import java.util.Stack; public class TreeDLR { public static void run(TreeNode node){ Stack<TreeNode> stack = new Stack<>(); while(node != null || !stack.isEmpty()){ if(node != null){ System.out.print(node.data+" "); stack.push(node); node = node.left; }else { node = stack.pop(); node = node.right; } } } }
Ⅱ.中序遍历:
import java.util.Stack; public class TreeLDR { public static void run(TreeNode node){ Stack<TreeNode> stack = new Stack<>(); while(node != null || !stack.isEmpty()){ if(node != null){ stack.push(node); node = node.left; }else{ node = stack.pop(); System.out.print(node.data + " "); node = node.right; } } } }
Ⅲ.后序遍历:
import java.util.Stack; public class TreeLRD { public static void run(TreeNode node){ Stack<TreeNode> stack = new Stack<>(); TreeNode last = null; while(node != null || !stack.isEmpty()){ if(node != null){ stack.push(node); node = node.left; }else{ node = stack.peek(); if(node.right != null && node.right != last){ node = node.right; }else{ System.out.print(node.data + " "); stack.pop(); last = node; node = null; } } } } }
Ⅳ.层序遍历:
import java.util.ArrayDeque; public class TreeLevel { public static void run(TreeNode node){ ArrayDeque<TreeNode> queue = new ArrayDeque<>(); queue.add(node); while(!queue.isEmpty()){ node = queue.poll(); System.out.print(node.data + " "); if(node.left != null) queue.add(node.left); if(node.right != null) queue.add(node.right); } } }
相关文章推荐
- 二叉树遍历的非递归实现 java版本
- 二叉树遍历的递归与非递归实现(java)
- 【数据结构】Java实现二叉树遍历(递归)
- 二叉树遍历,已知前序遍历与中序遍历,求后续遍历 使用java(递归方式)实现
- Java实现二叉树遍历(递归,非递归)
- 【数据结构】Java实现二叉树遍历(非递归)
- 二叉树遍历的递归、非递归算法(Java实现)
- java数据结构之二叉树遍历的非递归实现
- java语言实现的二叉树的各种操作(包括递归与非递归遍历二叉树,求二叉树的高度,节点总数,叶子节点等)
- java递归实现文件的删除和拷贝
- 递归的使用——关于括号排列(分别使用Java和C++算法实现)
- java代码实现递归@oneToMany
- Java实现折半查找(二分查找)的递归和非递归算法
- n皇后问题java递归实现
- 完全二叉树的JAVA实现(以及非递归遍历方法)
- 排列与组合的Java递归实现
- 棋盘覆盖--递归分治java实现
- java递归实现二分查找
- 二叉树遍历递归实现
- java实现 二叉树遍历