标签: binary-tree

C语言中树数据结构教程

有人可以使用C指导我使用树数据结构的一些教程.我尝试使用谷歌搜索,但大多数实现都是针对C++或Java.如果有人能指出我在C中的一些在线教程,那将是很棒的.

谢谢..

c tree binary-tree data-structures

14
推荐指数
1
解决办法
4万
查看次数

13
推荐指数
2
解决办法
2万
查看次数

对于给定的二叉树,找到最大二进制搜索子树

对于给定的二叉树,找到最大的子树,它也是二叉搜索树?

例:

输入:

                   10
               /         \
             50           150
            /  \         /   \
          25    75     200    20
         / \   / \    /  \    / \
        15 35 65 30  120 135 155 250 
Run Code Online (Sandbox Code Playgroud)

输出:

                   50
                  /   \
                 25   75
                / \   /
               15 35  65
Run Code Online (Sandbox Code Playgroud)

algorithm binary-tree binary-search-tree

13
推荐指数
1
解决办法
4994
查看次数

具有查找功能的优先级队列 - 最快的实现

我正在寻找一个具有附加要求的优先级队列,一个查找/搜索功能,它将告诉一个项目是否在队列中的任何位置.所以函数将是:insert,del-min和find.

我不确定是否应该使用Heap或Self-balancing二进制搜索树.看来PQ通常用Heap实现,但我想知道使用二叉搜索树是否有任何优势,因为我还需要find函数.

此外,平均而言,我会做更多的插入而不是删除.我也在考虑一个d-ary堆.基本上,每一秒都很重要.

谢谢!

heap optimization binary-tree types priority-queue

13
推荐指数
1
解决办法
8735
查看次数

二叉树的最低共同祖先

这是一个受欢迎的访谈问题,我可以在这个主题上找到的唯一一篇文章来自TopCoder.对我来说不幸的是,从面试答案的角度看,它看起来过于复杂.

除了绘制两个节点的路径并推断祖先之外,是否有更简单的方法可以做到这一点?(这是一个很受欢迎的答案,但是面试问题的变化需要一个恒定的空间答案).

java binary-tree

13
推荐指数
2
解决办法
9881
查看次数

Haskell:拼合二叉树

我正在考虑将二进制树展平为列表,以便进行后续处理.

我首先考虑使用(++)加入左右分支,但后来想到了更糟糕的情况需要O(n^2)时间.

然后我考虑向后构建列表,使用(:)在线性时间附加到前面.然而,我想如果我将这个列表发送到类似折叠的函数,它必须等到整个树遍历才能开始折叠,因此不能使用列表融合.

然后我想出了以下内容:

data Tree a = Node a (Tree a) (Tree a) | Tip

flatten :: Tree a -> [a]
flatten x = (flatten' x) []

flatten' :: Tree a -> [a] -> [a]
flatten' (Node x left right) l = (flatten' left (x:(flatten' right l)))
flatten' Tip l = l

main = 
  putStrLn $ show $ flatten $ 
    (Node 2 (Node 1 Tip Tip) (Node 4 (Node …
Run Code Online (Sandbox Code Playgroud)

algorithm tree binary-tree haskell difference-lists

13
推荐指数
1
解决办法
4911
查看次数

如何在后序遍历中构造BST

我知道有一些方法可以从预先遍序遍历(作为数组)构造树.考虑到有序和预订遍历,更常见的问题是构造它.在这种情况下,虽然顺序遍历是多余的,但它确实使事情变得更容易.任何人都可以告诉我如何进行后期遍历?迭代和递归解决方案都是必需的.

我尝试使用堆栈迭代地执行它,但根本无法正确地获得逻辑,因此得到了一个可怕的凌乱的树.同样去递归.

algorithm recursion binary-tree binary-search-tree

13
推荐指数
3
解决办法
2万
查看次数

尝试使用两个if语句打印树的顶视图

问题陈述

您将获得指向二叉树根的指针.打印二叉树的顶视图.您只需要完成该功能.

我的代码:

void top_view(Node root)
 {  
       Node r = root;

       if(r.left!=null){
          top_view(r.left);
          System.out.print(r.data + " ");
        }
       if(r.right!=null){
          System.out.print(r.data + " ");
          top_view(r.right);
        }
}
Run Code Online (Sandbox Code Playgroud)

每次调用函数时都会执行两个if语句,但我只需要执行其中一个.我尝试过切换但是它给出了常量表达式错误.我已经为这个问题找到了不同的解决方案.

所以我只想知道如果一次执行我们是否只能制作一个,即有没有办法在不改变方法的情况下修复我的代码?

在此输入图像描述 在此输入图像描述

问题链接: https ://www.hackerrank.com/challenges/tree-top-view

java treeview tree binary-tree data-structures

13
推荐指数
2
解决办法
8909
查看次数

不明白二叉树最大路径和问题的解法

GeeksforGeeks 网站提出了二叉树最大路径和问题的解决方案。问题如下:

给定一棵二叉树,求最大路径和。路径可以在树中的任何节点开始和结束。

解决方案的核心如下:

int findMaxUtil(Node node, Res res) 
{ 
  
    if (node == null) 
        return 0; 
  
    // l and r store maximum path sum going through left and 
    // right child of root respectively 
    int l = findMaxUtil(node.left, res); 
    int r = findMaxUtil(node.right, res); 
  
    // Max path for parent call of root. This path must 
    // include at-most one child of root 
    int max_single = Math.max(Math.max(l, r) + node.data, 
                              node.data); 
  
  
    // Max Top represents the sum when the …
Run Code Online (Sandbox Code Playgroud)

java algorithm binary-tree

13
推荐指数
1
解决办法
1461
查看次数

树结构的真实世界的例子

我正在寻找一些用于商业/自由软件项目,现代或旧的树结构的例子.我可以在维基百科上看到示例,但我正在寻找更具体的示例以及如何使用它们.例如,数据库中的主键是(从我读过的)存储在BST结构中或BST的变体(随意纠正我)

我的问题不仅限于二进制搜索树(BST),它可以包括任何变体,如红黑,AVL等.

tree binary-tree binary-search-tree

12
推荐指数
5
解决办法
3万
查看次数