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 

  • 相关阅读:
    mongodb修改和删除操作
    mongodb常用查询语句
    ejs常用功能函数
    Rails + React +antd + Redux环境搭建
    nodejs安装和卸载
    Git 建立仓库及常用命令速查表
    使用MVC5+Entity Framework6的Code First模式创建数据库并实现增删改查功能
    gem devise配置
    Ubuntu16.04安装postgresql9.4及pgadmin3图形管理界面
    Rails Migration Data Model栏位修改及数据类型介绍
  • 原文地址:https://www.cnblogs.com/leaveast/p/12381462.html
Copyright © 2011-2022 走看看