递归和非递归显示前序遍历

来源:互联网 发布:重庆药交所网络事业部 编辑:程序博客网 时间:2024/05/16 07:47

非递归实现前序遍历,和中序遍历查不多,只是输出条件改变下,实现过程如下所示:

package cn.edu.nwu.structs.tree;import java.util.Stack;/** * @author jcm * 前序遍历二叉树 * 时间 2016年9月3日 */public class PreOrderBinaryTree {public static void main(String[] args) {BinaryTreeNode root = CreateBinaryTree.createBinaryTree();System.out.println("递归实现前序遍历");preOrder(root);System.out.println();System.out.println("非递归实现前序遍历");preOrderRecursion(root);}/** * 递归实现前序遍历 * @param root */public static void preOrder(BinaryTreeNode root){if(root == null){return ;}System.out.print(root.data+" ");if(root.leftTreeNode != null){preOrder(root.leftTreeNode);}if(root.rightTreeNode != null){preOrder(root.rightTreeNode);}}/** * @author jcm *  非递归实现前序遍历 * @param root */public static void preOrderRecursion(BinaryTreeNode root){if(root == null){return ;}Stack<BinaryTreeNode> stack = new Stack<BinaryTreeNode>();BinaryTreeNode currentTNode = root;while(!stack.isEmpty() || currentTNode != null){while(currentTNode != null){System.out.print(currentTNode.data+" ");stack.push(currentTNode);currentTNode = currentTNode.leftTreeNode;}if(!stack.isEmpty()){currentTNode = stack.peek();stack.pop();currentTNode = currentTNode.rightTreeNode;}}}}


0 0
原创粉丝点击