二叉树递归遍历和非递归遍历
来源:互联网 发布:java程序监听端口 编辑:程序博客网 时间:2024/05/18 09:28
递归遍历:
public void preOrder() {// TODO Auto-generated method stubSystem.out.print("先根次序遍历二叉树:");preOrder(root);System.out.println();}public void preOrder(BinaryNode<T> p) {if (p != null) {System.out.print(p.data.toString() + " ");preOrder(p.left);preOrder(p.right);}}@Overridepublic void inOrder() {// TODO Auto-generated method stubSystem.out.print("中根次序遍历二叉树:");inOrder(root);System.out.println();}public void inOrder(BinaryNode<T> p) {if (p != null) {inOrder(p.left);System.out.print(p.data.toString() + " ");inOrder(p.right);}}@Overridepublic void postOrder() {// TODO Auto-generated method stubSystem.out.print("后根次序遍历二叉树:");postOrder(root);System.out.println();}public void postOrder(BinaryNode<T> p) {if (p != null) {postOrder(p.left);postOrder(p.right);System.out.print(p.data.toString() + " ");}}
非递归遍历
public void inOrderTraverse() {System.out.println("中根次序遍历(非递归):");Stack<BinaryNode<T>> stack = new Stack<BinaryNode<T>>();BinaryNode<T> p = this.root;while (p != null || !stack.isEmpty()) {if (p != null) {stack.push(p);p = p.left;} else {p = stack.pop();System.out.println(p.data + " ");p = p.right;}}}public void preOrderTaverse() {System.out.println("先根次序遍历(非递归):");Stack<BinaryNode<T>> stack = new Stack<BinaryNode<T>>();BinaryNode<T> p = this.root;while (p != null || !stack.isEmpty()) {if (p != null) {System.out.println(p.data + " ");stack.push(p);p = p.left;} else {p = stack.pop();p = p.right;}}}public void postOrderTaverse() {System.out.println("后根次序遍历(非递归):");Stack<BinaryNode<T>> stack = new Stack<BinaryNode<T>>();BinaryNode<T> p = this.root;BinaryNode<T> q = null;while (p != null || !stack.isEmpty()) {// 所有的左子结点相继入栈,除了最后一个while (p.left != null) {stack.push(p);p = p.left;}// 当前节点无右子结点或右子结点已经输出,就输出当前节点while (p.right == null || p.right == q) {System.out.print(p.data + " ");q = p;if (stack.isEmpty())return;p = stack.pop();}// 处理右子结点stack.push(p);p = p.right;}
- 递归 和 非递归 遍历二叉树
- 递归和非递归遍历二叉树
- 递归和非递归遍历二叉树
- 二叉树递归和非递归遍历
- 二叉树递归和非递归遍历
- 递归和非递归遍历二叉树
- 二叉树递归遍历和非递归遍历
- 二叉树的递归遍历和非递归遍历
- 二叉树递归遍历和非递归遍历
- 二叉树递归遍历和非递归遍历
- 二叉树的递归遍历和非递归遍历
- 二叉搜索树的递归遍历和非递归遍历
- java 二叉树的递归遍历和非递归遍历
- 非递归遍历二叉树
- 二叉树遍历非递归
- 非递归遍历二叉树
- 二叉树非递归遍历
- 二叉树非递归遍历
- 彩信拦截之突破360的小篱笆
- ICML2007两篇文章---迁移学习
- 有效创建oracle dblink 的两种方式
- FLEX 下的MVP应用 以及 ColdFusion 的远程服务调用
- 深入Java单例模式
- 二叉树递归遍历和非递归遍历
- ios UITapGestureRecognizer 单指单击、单指多击、多指单击、多指多击事件操作
- c程序中存储空间布局
- 截取视图 保存
- org.xml.sax.SAXParseException: The markup in the document preceding the root element must be well-fo
- 色彩感觉
- sql语句优化
- URI与Path的的分析
- MonoDevelop 调试 Unity3D项目 告别Debug.log()