以文件树形式打印二叉树
来源:互联网 发布:海南网络诈骗最新新闻 编辑:程序博客网 时间:2024/06/04 18:14
输入:逻辑上显示如下:
输出:文件树形式
60|----6| |----^| |----21|----93| |----83| | |----70| | |----^| |----^
代码:
package com.gmail.dailyefforts.ds.tree;import java.util.Random;public class BinaryTree<T extends Comparable<T>> {private Node root;private class Node {Node left;Node right;final T data;final int level;public Node(T data, int level) {this.data = data;this.level = level;}}public void insert(T data) {root = insert(root, data, 1);}private Node insert(Node x, T data, int level) {if (x == null) {return new Node(data, level);}final int cmp = data.compareTo(x.data);if (cmp < 0) {Node node = insert(x.left, data, level + 1);x.left = node;} else {Node node = insert(x.right, data, level + 1);x.right = node;}return x;}public void print() {print(root);}private void printNode(int level, T data) {for (int i = 1; i < level; i++) {if (i == level - 1) {System.out.print("|----");} else {System.out.print("| ");}}if (data == null) {System.out.println("^");} else {System.out.println(data);}}private void print(Node x) {if (x == null) {return;}printNode(x.level, x.data);if (x.left == null && x.right == null) {return;}if (x.left != null) {print(x.left);} else {printNode(x.level + 1, null);}if (x.right != null) {print(x.right);} else {printNode(x.level + 1, null);}}public static void main(String[] args) {final int N = 6;final int M = 100;final Random random = new Random(System.currentTimeMillis());final BinaryTree<Integer> tree = new BinaryTree<>();for (int i = 0; i < N; i++) {tree.insert(random.nextInt(M));}tree.print();}}
- 以文件树形式打印二叉树
- 二叉树基本操作及树形打印
- 打印二叉树形结构
- 二叉树 建立 && 遍历 && 深度 && 树形打印 (增强版)
- 将二叉树在控制台按树形打印
- 以树形格式罗列文件
- 递归求二叉树的层数和递归打印二叉树的树形结构
- 20131024: 树状数组入门; 树堆入门; 二叉树的树形打印
- c语言打印二叉树树形结构(转载自:http://blog.csdn.net/xzongyuan)
- c++实现二叉树的插入、删除、查询、遍历和树形打印
- 打印一个目录,并以树形结构显示
- c++实现对文件目录树形打印
- 【二叉树】二叉树打印
- 加分二叉树 树形DP
- 普通二叉树及其树形
- 一个会员分红结算,以二叉树形式显示出来他的安置图,还可查看推荐图
- 剑指offer55--之字形式打印二叉树
- 分层打印二叉树
- LoadRunner性能脚本开发实战训练
- jsp中pageEncoding和contentType的区别
- flex sdk4.1 livedocs
- 一个原理清晰的连接池
- linux shell实现随机数多种方法(date,random,uuid)
- 以文件树形式打印二叉树
- spring里使用JDBC(二)JdbcTemplate方式
- MagicDictionary
- Thread
- 移植项目的规模分析和测试指标的预测
- 一高考题
- 小布老师Oracle 9i DBA Fundamentals I 视频讲座 30
- Linq-Thread
- Oracle按时间分组统计的sql与oracle 多行合并一行