zoukankan      html  css  js  c++  java
  • Print a Binary Tree in Vertical Order

    http://www.geeksforgeeks.org/print-binary-tree-vertical-order/

     1 package algorithms;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 import java.util.Map;
     6 import java.util.TreeMap;
     7 
     8 public class PrintVertical {
     9 
    10     private static TreeMap<Integer, List<TreeNode>> hm = new TreeMap<>();
    11     
    12     public static void main(String[] args) {
    13         TreeNode root = new TreeNode(1);
    14         TreeNode two = new TreeNode(2);
    15         TreeNode three = new TreeNode(3);
    16         TreeNode four = new TreeNode(4);
    17         TreeNode five = new TreeNode(5);
    18         TreeNode six = new TreeNode(6);
    19         TreeNode seven = new TreeNode(7);
    20         TreeNode eight = new TreeNode(8);
    21         TreeNode nine = new TreeNode(9);
    22         root.left = two;
    23         root.right = three;
    24         two.left = four;
    25         two.right = five;
    26         three.left = six;
    27         three.right = seven;
    28         six.right = eight;
    29         seven.right = nine;
    30         printVertical(root);
    31         for(Map.Entry<Integer, List<TreeNode>> entry: hm.entrySet()) {
    32             System.out.println("key====="+entry.getKey());
    33             List<TreeNode> temp = entry.getValue();
    34             for(TreeNode node: temp){
    35                 System.out.println("node val======"+node.val);
    36             }
    37         }
    38     }
    39     
    40     public static void printVertical(TreeNode root) {
    41         helper(0, root);
    42     }
    43     
    44     public static void helper(int cur, TreeNode root) {
    45         if(root == null)
    46             return;
    47 
    48         ArrayList<TreeNode> array;
    49         if(hm.containsKey(cur)) {
    50             array = (ArrayList<TreeNode>) hm.get(cur);
    51         } else {
    52             array = new ArrayList<TreeNode>();
    53         }
    54         array.add(root);
    55         hm.put(cur, array);
    56         helper(cur - 1, root.left);
    57         helper(cur + 1, root.right);
    58     }
    59 }

    <注> 需要注意的是使用TreeMap而不是HashMap来存遍历以后的数据。Better to use TreeMap in this case, as it will store the result in ascending order, 

        which we are interested in.

  • 相关阅读:
    U盘备份工具
    改进的窗口置顶工具
    有关DLL中封装的MDI子窗体出现TFont错误的解释
    QQ风格程序的编写
    改进的自动按键工具
    万能Update语句
    在DLL中封装的VCL窗体Tab键响应的问题
    自动按键工具
    灵活控制SVN服务
    在DLL动态链接库中封装VCL的MDI子窗体
  • 原文地址:https://www.cnblogs.com/Phoebe815/p/5006192.html
Copyright © 2011-2022 走看看