zoukankan      html  css  js  c++  java
  • 让我们来写个算法吧,(2)二叉树的前序,中序,后序 遍历

    树的类结构

    public class TreeNode {
        
        TreeNode left;
        
        TreeNode right;
        
        int value;
        
        public TreeNode(int value ) {
            this.value = value;
        }
    
    }

    自己生成二叉树 

    private TreeNode createTreeNode() {
            
            TreeNode[] node = new TreeNode[10];// 以数组形式生成一棵完全二叉树
            
            for (int i = 0; i < 10; i++) {
                node[i] = new TreeNode(i);
            }
            
            for (int i = 0; i < 10; i++) {
                if (i * 2 + 1 < 10)
                    node[i].left = node[i * 2 + 1];
                if (i * 2 + 2 < 10)
                    node[i].right = node[i * 2 + 2];
            }
    
            return node[0];
        }

    生成的二叉树长这个样子

     二叉树的前序遍历就是,先输出根节点,再输出左子节点,最后输出右子节点

    private void preOrderRe(TreeNode node) {
            if(null == node) {
                return;
            }
            System.out.print(node.value+" ");
            preOrderRe(node.left);
            preOrderRe(node.right);
        }

    遍历结果 : 0 1 3 7 8 4 9 2 5 6 

    二叉树的中序遍历就是,先输出左子节点,再输出根节点,最后输出右子节点

    private void midOrderRe(TreeNode node) {
            if(null == node) {
                return;
            }
            if(node.left!=null) {
                midOrderRe(node.left);
            }
            System.out.print(node.value+" ");
            
            midOrderRe(node.right);
        }

    遍历结果 : 7 3 8 1 9 4 0 5 2 6

    二叉树的后中序遍历就是,先输出左子节点,再输出右子节点,最后输出根节点

        private void postOrderRe(TreeNode node) {
            if(null == node) {
                return;
            }
            if(node.left!=null) {
                postOrderRe(node.left);
            }
            postOrderRe(node.right);
            
            System.out.print(node.value+" ");
            
        }

    遍历结果 : 7 8 3 9 4 1 5 6 2 0 

  • 相关阅读:
    《硅谷之谜》读书笔记
    Google的Bigtable学习笔记(不保证正确性)
    软件开发到底是怎么一回事呢?
    如何控制自己之2016个人目标管理
    如何自适应网页的协议(http/https/……)
    数据库时间戳设计
    AngularJS-Controller的使用-读书笔记
    FIM相关报错汇总
    iPad上的Cookie到底有多长?
    【solr】join查询,跟mysql的join不一样
  • 原文地址:https://www.cnblogs.com/leaveast/p/12381462.html
Copyright © 2011-2022 走看看