zoukankan      html  css  js  c++  java
  • 先序遍历和后序遍历区别和代码实现

    过程都一样,都是自上而下,自左向右一一遍历,不同的是先序遍历求的是儿子,后序遍历求的是老子

    先序遍历:从上往下,从左至右,依次遍历

    中序遍历,可以把每个节点看作数学中的括号,然后是左节点,节点,右节点

    后序遍历:从下往上,自左向右遍历。

    代码实现:

    package sort;
    
    import java.util.LinkedList;
    
    public class pre_mid_after_sort {
    
    
        public static  int[] array = new int[]{1,2,3,4,5,6,7,8,9,10};
    
        public static void main(String[] args) {
    
            LinkedList<Node> node = createNode(array);
            Node node1 = node.get(0);
    
            preNode(node1);
    
        }
    
    
    
        /**
         * 内部类:
         * 方法内部类,就是类中的方法还有一个类
         */
        private static class Node{
            int data;
            Node letfNode;
            Node rightNode;
    
            public Node(int data) {
                this.data = data;
                this.letfNode =null;
                this.rightNode = null;
                
            }
            
            }
            
        public static LinkedList<Node> createNode(int[] array){
            //添加元素
            final LinkedList<Node> nodes = new LinkedList<>();
            for (int i = 0; i < array.length; i++) {
                nodes.add(new Node(array[i]));
            }
            //将各个节点指针对应一下
            for (int index = 0; index < nodes.size()/2 - 1; index++) {
                nodes.get(index).letfNode = nodes.get(index * 2 + 1);
                nodes.get(index).rightNode = nodes.get((index * 2 + 2));
            }
    
                nodes.get(nodes.size()/2 - 1).letfNode = nodes.get(nodes.size() - 1);
            if(nodes.size()%2 == 1)
    
                nodes.get(nodes.size()/2 - 1).rightNode = nodes.get(nodes.size() - 1);
    
            return nodes;
    
    
            }
    
    
    
    
    
    
    
        public static void preNode(Node node){
            if(node == null )
                return;
            System.out.println(node+" ");
            preNode(node.letfNode);
            preNode(node.rightNode);
    
    
        }
        public static void midNode(Node node){
            if(node == null)
                return;
    
            midNode(node.letfNode);
            System.out.println(node+" ");
            midNode(node.rightNode);
        }
    
        public static void afterNode(Node node){
            if(node == null)
                return;
    
            afterNode(node.letfNode);
            afterNode(node.rightNode);
            System.out.println(node+" ");
        }
    
    
    
    
    
    }

  • 相关阅读:
    7-5 幸运彩票 (15分)
    基于Python实现学生管理系统
    NB-IoT模块烧写详细过程
    IAR软件使用的快捷键配置以及配置cc2530环境
    7-54 求方程的解 (10 分)
    7-52 计算球体积 (10 分)
    7-51 号码牌的制作 (10 分)
    7-48 输出星期名缩写 (70 分)
    7-49 求前n项的阶乘之和 (15 分)
    7-46 jmu-python-求单词长度 (10 分)
  • 原文地址:https://www.cnblogs.com/guosai1500581464/p/12934788.html
Copyright © 2011-2022 走看看