zoukankan      html  css  js  c++  java
  • 《程序员代码面试指南》第三章 二叉树问题 较为直观的打印二叉树

    题目

    较为直观的打印二叉树
    

    java代码

    /**
     * @Description:较为直观的打印二叉树
     * @Author: lizhouwei
     * @CreateDate: 2018/4/14 16:09
     * @Modify by:
     * @ModifyDate:
     */
    public class Chapter3_3 {
        public void printTree(Node head) {
            recInOrder(head, 0, "H", 17);
        }
    
        //借助中序遍历 ,只将先遍历左子树 调整为先遍历右子树
        private void recInOrder(Node head, int level, String filChar, int len) {
            if (head == null) {
                return;
            }
            recInOrder(head.right, level + 1, "v", len);
            String value = filChar + head.value + filChar;
            int lenM = value.length();
            int lenL = (len - lenM) / 2;
            int lenR = len - lenM - lenL;
            System.out.println(getSpace(level * len) + getSpace(lenL) + value + getSpace(lenM));
            recInOrder(head.left, level + 1, "^", len);
        }
    
        private String getSpace(int len) {
            StringBuilder sb = new StringBuilder();
            while (len-- > 0) {
                sb.append(" ");
            }
            return sb.toString();
        }
    
        //测试
        public static void main(String[] args) {
            Chapter3_3 chapter = new Chapter3_3();
            int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
            Node head = NodeUtil.generTree(arr, 0, arr.length - 1);
            chapter.printTree(head);
        }
    }
    
  • 相关阅读:
    执行.class文件
    Ant能干什么,编译?打包!
    C的随想
    微服务
    2018年宝鸡市高考复课报告会材料
    用图像解不等式
    高频易错题目01
    2018年宝鸡市二检数学题目解答
    点差法
    和事件的概率求法
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/8832754.html
Copyright © 2011-2022 走看看