快速业务通道

Java实现二叉树的递归与非递归遍历 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
e>();      while (p != null) {        // 左子树入栈        for (; p.getLeft() != null; p = p.getLeft())          stack.push(p);        // 当前节点无右子或右子已经输出        while (p != null && (p.getRight() == null || p.getRight() == q)) {          visit(p);          q = p;// 记录上一个已输出节点          if (stack.empty())            return;          p = stack.pop();        }        // 处理右子        stack.push(p);        p = p.getRight();      }    }    /** 非递归实现中序遍历 */    protected static void iterativeInorder(BTNode p) {      Stack<BTNode> stack = new Stack<BTNode>();      while (p != null) {        while (p != null) {          if (p.getRight() != null)            stack.push(p.getRight());// 当前节点右子入栈          stack.push(p);// 当前节点入栈          p = p.getLeft();        }        p = stack.pop();        while (!stack.empty() && p.getRight() == null) {          visit(p);          p = stack.pop();        }        visit(p);        if (!stack.empty())          p = stack.pop();        else          p = null;      }    }    public static void main(String[] args) {      BinTree tree = new BinTree(init());      System.out.print(" Pre-Order:");      preorder(tree.getRoot());      System.out.println();      System.out.print(" In-Order:");      inorder(tree.getRoot());      System.out.println();      System.out.print("Post-Order:");      postorder(tree.getRoot());      System.out.println();      System.out.print(" Pre-Order:");      iterativePreorder(tree.getRoot());      System.out.println();      System.out.print(" In-Order:");      iterativeInorder(tree.getRoot());      System.out.println();      System.out.print("Post-Order:");      iterativePostorder(tree.getRoot());      System.out.println();    } }

输出结果

Pre-Order:H D B A C G F E   In-Order:B A D C H G E F Post-Order:A B C D E F G H Pre-Order:H D B A C G F E   In-Order:B A D C H G E F Post-Order:A B C D E F G H 

本文出自 “子 孑” 博客,请务必保留此出处 http://zhangjunhd.blog.51cto.com/113473/82616

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号