`

Print a Binary Tree Vertical Order (column wise)

 
阅读更多

This is a Facebook interview question.

We have a binary tree, suppose like this:

8/   \
    610/ \   /  \
  47912/ \
35

We have to print this binary tree in top-down manner - column wise. Note that, 8, 7 & 9 would be considered in same column. So the required output should be:

34658791012
public void traverse(Node root) {
    TreeMap<Integer, List<Integer>> columnMap = new TreeMap<>();

    recurseTraverse(root, columnMap, 0);

    for (Entry<Integer, List<Node<Integer>>> entry: columnMap.entrySet()) {
        System.out.println("Column - " + entry.getKey() + " : " + entry.getValue());
    }
}

private void recurseTraverse(final Node node, final Map<Integer, List<Integer>> columnmap, final int column) {
    if (node == null) {
        return;
    }
    List<Integer> list = columnmap.get(column);
    if (list == null) {
        list = new ArrayList<Integer>();
        columnmap.put(column, list);
    }
    list.add(node.getValue());
    recurse(node.left(), columnmap, column - 1);
    recurse(node.right(), columnmap, column + 1);

}

From:

http://codereview.stackexchange.com/questions/36799/printing-a-binary-tree-top-down-column-wise

分享到:
评论

相关推荐

    Construct Binary Tree from Preorder and Inorder Traversal

    Construct Binary Tree from Preorder and Inorder Traversal 根据先序,中序建立二叉树

    C#资源库-binarytree

    标题"C#资源库-binarytree"指的是一个使用C#编程语言实现的二叉树数据结构的代码库。在软件开发中,二叉树是一种基础且重要的数据结构,它由节点构成,每个节点最多有两个子节点,通常称为左子节点和右子节点。这种...

    Preorder-binary-tree-(tree-print.zip_print binary tree_tree_打印二叉

    `print_tree` 函数则用于树状打印,通过调整缩进来展示树的层次结构。 在实际应用中,二叉树遍历和打印可用于各种场景,如搜索、排序、数据结构可视化等。了解这些基本操作对于理解和操作二叉树至关重要。对于...

    BinaryTree-BinaryTree

    BinaryTree-BinaryTree

    BinaryTree

    This is a binary tree search implementation.

    Java Binary Tree Order

    总结,`Java Binary Tree Order`涉及到了二叉树的基本操作,包括遍历(中序、后序、前序)和可能的删除功能。深入理解这些概念和实现,有助于开发者在解决实际问题时构建高效的数据结构和算法。

    BinaryTree二叉树实现

    二叉树是一种重要的数据结构,它在计算机科学中扮演着至关重要的角色,特别是在算法和...在二叉树的`BinaryTree`文件中,可能会包含这些操作的具体实现,通过阅读和理解这些代码,可以深入学习和掌握二叉树的相关知识。

    Construct Binary Tree from Inorder and Postorder Traversa

    Construct Binary Tree from Inorder and Postorder Traversa.根据先序后续构建二叉树

    BinaryTree-源码.rar

    【标题】:“BinaryTree-源码.rar”是一个与二叉树相关的源代码压缩包,它可能包含各种二叉树数据结构的实现,如二叉搜索树、平衡二叉树(AVL树或红黑树)或者自定义的二叉树结构。这个压缩包可能为学习数据结构与...

    binarytree.rar

    二叉树是一种在计算机科学中广泛使用的数据结构,它的每个节点最多有两个子节点,通常称为左子节点和右...解压“binarytree.rar”,查看其中的文件,理解数据结构,并根据给定的描述编写代码,以实现二叉树的前序遍历。

    陈越、何钦铭-数据结构作业11:Tree Traversals Again二叉树非递归遍历/栈遍历

    An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the ...

    java-二叉树binaryTree

    在IT领域,二叉树(Binary Tree)是一种基础的数据结构,尤其在计算机科学中有着广泛的应用。二叉树是每个节点最多有两个子节点的树结构,通常分为左子节点和右子节点。在这个"java-二叉树binaryTree"主题中,我们将...

    Python-BinaryTree用于学习二叉树的Python库

    "Python-BinaryTree"是一个专门用于学习和操作二叉树的Python库,它提供了方便的API来创建、遍历和操作二叉树。 1. **二叉树的概念与类型** - 二叉树的基本概念:二叉树的每个节点包含一个值、一个指向左子树的...

    binary tree C语言算法

    在计算机科学中,二叉树(Binary Tree)是一种数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。这种数据结构广泛应用于各种算法和问题解决,如搜索、排序、文件系统等。在C语言中实现二叉树,我们...

    BinaryTreeSort

    BinaryTreeSort的java实现,简单的二叉树排序

    94.Binary Tree Inorder Traversal二叉树的中序遍历【LeetCode单题讲解系列】

    94.Binary_Tree_Inorder_Traversal二叉树的中序遍历【LeetCode单题讲解系列】

    【LeetCode】102. Binary Tree Level Order Traversal

    我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI 微信公众号介绍:Microstrong(小强)同学主要研究机器学习、深度学习、计算机视觉、智能对话系统相关内容,分享在学习过程中的...102. Binary Tree Leve

    二叉树官方源码BinaryTree_src

    在给定的“二叉树官方源码BinaryTree_src”中,我们可以找到一系列与二叉树相关的源代码文件,这为理解和实现二叉树提供了宝贵的参考资料。 首先,我们看到一个名为"BinaryTreeDemo.clw"的文件,这可能是项目的工作...

    BinaryTree.cpp

    C++实现 操作函数包括先序、中序、后序遍历,求深度,深度、广度遍历 构建二叉树

    Search in a Binary Search Tree.zip

    在"Search in a Binary Search Tree"这个主题中,我们主要探讨如何在二叉搜索树中高效地进行查找操作。查找操作的目标是找到树中与给定值相匹配的节点。由于二叉搜索树的特性,我们可以采用分治策略来实现快速查找:...

Global site tag (gtag.js) - Google Analytics