zoukankan      html  css  js  c++  java
  • 二叉树的非递归遍历





    1. 递归实现


    先序

    public void preOrder(){
        preOrder(root);
    }
    private void preOrder(Node node){
        if(node != null){
            System.out.println(node.value);
            preOrder(node.left);
            preOrder(node.right);
        }
    }
    

    中序

    public void midOrder(){
        midOrder(root);
    }
    private void midOrder(Node node){
        if(node != null){
            midOrder(node.left);
            System.out.println(node.value);
            midOrder(node.right);
        }
    }
    

    后序

    public void postOrder(){
        postOrder(root);
    }
    private void postOrder(Node node){
        if(node != null){
            postOrder(node.left);
            postOrder(node.right);
            System.out.println(node.value);
        }
    }
    




    2. 非递归


    前序

    public void preOrderNew(){
        preOrderNew(root);
    }
    private void preOrderNew(Node node){
        if(node != null){
            LinkedList<Node> list = new LinkedList();
            list.addFirst(node);
    
            while(!list.isEmpty()){
                Node temp = (Node) list.removeFirst();
                if(temp.right != null){
                    list.addFirst(temp.right);
                }
                if(temp.left != null){
                    list.addFirst(temp.left);
                }
                System.out.println(temp.value);
            }
        }
    }
    

    中序

    public void midOrderNew(){
        midOrderNew(root);
    }
    private void midOrderNew(Node node){
        LinkedList<Node> list = new LinkedList();
        while(!list.isEmpty() || node != null){
            if(node != null){
                list.addFirst(node);
                node = node.left;
            }else{
                node = list.removeFirst();
                System.out.println(node.value);
                node = node.right;
            }
        }
    }
    

    后序

    public void postOrderNew(){
        postOrderNew(root);
    }
    private void postOrderNew(Node node){
        if(node != null){
            LinkedList<Node> list1 = new LinkedList();
            LinkedList<Node> list2 = new LinkedList();
            list1.addFirst(node);
    
            while(!list1.isEmpty()){
                Node temp = list1.removeFirst();
                list2.addFirst(temp);
                if(temp.left != null){
                    list1.addFirst(temp.left);
                }
                if(temp.right != null){
                    list1.addFirst(temp.right);
                }
            }
            while(!list2.isEmpty()){
                Node temp = list2.removeFirst();
                System.out.println(temp.value);
            }
        }
    }
    


  • 相关阅读:
    统一身份认证部署ca 问题
    用组件beanutils,dbutils简化JDBC操作
    java 几种远程服务调用协议的比较
    让Tomcat支持路径、中文文件名(浏览器的get方式) .
    Spring 2.5中JdbcTemplate类query方法的三种回调接口
    tomcat 支持文件下载
    Eclipse 插件开发遇到问题心得总结
    eclipse user library的创建
    SCSI>SAS磁盘与FC磁盘的比较说明
    关于properties文件的字符编码
  • 原文地址:https://www.cnblogs.com/Howlet/p/12812648.html
Copyright © 2011-2022 走看看