zoukankan      html  css  js  c++  java
  • 01.如何直观的打印一棵树

    1.java版本

    //java语言
    
    public class PrintBinaryTree {
    
        public static class Node {
            public int value;
            public Node left;
            public Node right;
    
            public Node(int data) {
                this.value = data;
            }
        }
    
        public static void printTree(Node head) {
            System.out.println("Binary Tree:");
            printInOrder(head, 0, "H", 17);
            System.out.println();
        }
    
        public static void printInOrder(Node head, int height, String to, int len) {
            if (head == null) {
                return;
            }
            printInOrder(head.right, height + 1, "v", len);
            String val = to + head.value + to;
            int lenM = val.length();
            int lenL = (len - lenM) / 2;
            int lenR = len - lenM - lenL;
            val = getSpace(lenL) + val + getSpace(lenR);
            System.out.println(getSpace(height * len) + val);
            printInOrder(head.left, height + 1, "^", len);
        }
    
        public static String getSpace(int num) {
            String space = " ";
            StringBuffer buf = new StringBuffer("");
            for (int i = 0; i < num; i++) {
                buf.append(space);
            }
            return buf.toString();
        }
    
        public static void main(String[] args) {
            Node head = new Node(1);
            head.left = new Node(-222222222);
            head.right = new Node(3);
            head.left.left = new Node(Integer.MIN_VALUE);
            head.right.left = new Node(55555555);
            head.right.right = new Node(66);
            head.left.left.right = new Node(777);
            printTree(head);
    
            head = new Node(1);
            head.left = new Node(2);
            head.right = new Node(3);
            head.left.left = new Node(4);
            head.right.left = new Node(5);
            head.right.right = new Node(6);
            head.left.left.right = new Node(7);
            printTree(head);
    
            head = new Node(1);
            head.left = new Node(1);
            head.right = new Node(1);
            head.left.left = new Node(1);
            head.right.left = new Node(1);
            head.right.right = new Node(1);
            head.left.left.right = new Node(1);
            printTree(head);
    
        }
    
    }

    2.C++版本(待整理)

    ……

  • 相关阅读:
    小梦windows phone 8.1开发:语音朗读
    windows phone 8.1开发:socket通信聊天
    windows phone 8.1开发:触控和指针事件1
    Windows Phone 8.1开发:触控和指针事件2
    windows phone 8.1开发 onedrive操作详解
    windows phone 8.1开发SQlite数据库引用安装
    利用Register protocol实现网页调用桌面程序(类似迅雷、QQ等)
    windows phone 8.1开发SQlite数据库操作详解
    xrandr
    mongodb
  • 原文地址:https://www.cnblogs.com/paulprayer/p/10101035.html
Copyright © 2011-2022 走看看