标签: binary-tree

红宝石中的二叉搜索树

有没有理由我在Ruby中看不到二进制搜索树?

是否存在人们通常使用的等效数据结构或类?

我不是想解决一个具体问题; 只是想了解更多关于语言的知识.

谢谢!

ruby binary-tree

5
推荐指数
1
解决办法
3129
查看次数

C#Binary Tree's - Inorder/Preorder和PostOrder(递归帮助)

我需要一些递归帮助.我正在尝试用C#做一个二叉树,我想知道是否有可能用递归函数演示所有Inorder/PostOrder和PreOrder遍历.

我已经为PreOrder完成了它然后尝试了InOrder然而导致了StackOverflow异常,我对Binary Tree的掌握最多是脆弱的,所以任何对此的帮助都会非常感激,即使它看起来像是一个愚蠢的问题.

以下代码是我用于PreOrder Traversal的代码;

     public void recursivePreorder(BinaryTreeNode root)
    {
        Console.Write(root.Data.ToString());
        if (root.Left != null)
        {
            recursivePreorder(root.Left);
        }
        if (root.Right != null)
        {
            recursivePreorder(root.Right);
            }
    }

     public void preorderTraversal()
    {
        if (Root != null)
        {
            recursivePreorder(Root);
        }
        else
        {
            Console.WriteLine("There is no tree to process");
        }

    static void Main(string[] args)
    {

        // Build the tree
        Test.Add(5);
        Test.Add(2);
        Test.Add(1);
        Test.Add(3);
        Test.Add(3); // Duplicates are OK
        Test.Add(4);
        Test.Add(6);
        Test.Add(10);
        Test.Add(7);
        Test.Add(8);
        Test.Add(9);
        // Test if we can find values in the tree …
Run Code Online (Sandbox Code Playgroud)

c# recursion binary-tree

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

如何递归地找到二叉树中节点的高度

path = 0 # the lenght of the path
    while self.right != None or self.left != None:
        while self.right != None:
            self = self.right
            path = path +1 
        while self.left != None:
            self = self.left
            path = path +1
    return path
Run Code Online (Sandbox Code Playgroud)

这是我查找高度的示例代码,定义为从自身到叶子的节点数量的最长路径的长度.叶节点的高度为1.

它不起作用.

python algorithm binary-tree

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

对于给定的数据集,是否可以有多个有效的BST?

给定二叉搜索树中的一组数据,如数字1到10,是否可能存在多个平衡二叉搜索树?

或者,对于那组数据,是否只有一个独特的平衡BST?

谢谢

algorithm binary-tree binary-search-tree data-structures

5
推荐指数
1
解决办法
207
查看次数

如何确定平衡或完美平衡的二进制搜索树(仅从图片中)

我不确定如何确定树是平衡的,完美平衡的,或者如果我将它作为图片而不是代码则不然

例如,如果我有这棵树我怎样才能检查它是否平衡,完美平衡或不平衡?并且有人能给我一个完美平衡树的例子吗?

    [o]
   /   \
 [b]   [p]
   \    / \
  [d]  [m] [r]
Run Code Online (Sandbox Code Playgroud)

很明显,如果它是这样的话,我可以说这棵树是不平衡的:

      [b]
        \
        [d]
         \
          [r]
           \
           [c]
Run Code Online (Sandbox Code Playgroud)

但是,如果它与上面的那个非常类似,我不知道如何得到它

这是一个完美平衡和平衡的树:

        [k]
       /   \
      [A]   [p]
            /  \
           [N]  [R]
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下吗?

c java tree binary-tree binary-search-tree

5
推荐指数
1
解决办法
9837
查看次数

什么是有根的树?

树起根来是什么意思?我读了这里的定义,但即使我们指定一个节点作为根,为什么树只采用下面的形状?我的意思是我可以画一棵有 4 个顶点的有根树,而不是下面的 4 个形状吗?正确的?

在此输入图像描述

tree binary-tree data-structures

5
推荐指数
1
解决办法
8249
查看次数

如何使用Java实现二叉树的最低共同祖先?

我遇到了以下实现并花了一些时间,但仍然无法掌握这个想法.有人可以逐行解释它在做什么吗?我只是不明白在什么时候它可以决定一个节点是一个祖先.

谢谢

public class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if(root == null || root == p || root == q)  return root;
        TreeNode left = lowestCommonAncestor(root.left, p, q);
        TreeNode right = lowestCommonAncestor(root.right, p, q);
        if(left != null && right != null)   return root;
        return left != null ? left : right;
    }
}
Run Code Online (Sandbox Code Playgroud)

java algorithm binary-tree lowest-common-ancestor

5
推荐指数
1
解决办法
526
查看次数

如何实现缓存友好的动态二叉树?

根据包括Wikipedia在内的一些资料,实现二叉树的两种最常用的方法是:

  1. 每个节点明确拥有其子节点的节点和指针(或引用)
  2. 子节点的位置由其父节点的索引隐式给出的数组

第二个显然在内存使用引用的位置方面优越。但是,如果您希望以某种可能使树不平衡的方式从树中插入移除,可能会导致问题。这是因为此设计的内存使用量是树深度的指数函数。

假设您要支持此类插入和删除。如何实现树,以便树遍历可以充分利用CPU缓存。

我正在考虑为节点创建对象池并将它们分配到数组中。这样,节点将彼此靠近->因此具有良好的参考位置。

但是,如果节点的大小与缓存行的大小相同,这有意义吗?

如果您的L1行大小为64字节,并且访问的第一个成员std::vector<std::uint8_t>(64),则可能会在L1缓存中包含向量的全部内容。这意味着您可以非常快速地访问任何元素。但是,如果元素的大小与缓存行的大小相同怎么办?由于L1,L2和L3高速缓存的高速缓存行可能不会有很大差异,因此,似乎没有办法在此提供参考位置的帮助。我错了吗?还有什么可以做的?

c++ binary-tree memory-management data-structures cpu-cache

5
推荐指数
1
解决办法
2052
查看次数

如何从逻辑应用 HTTP 响应将多行插入到 Azure 表存储中?

我有一个逻辑应用程序,它可以 ping API 并获取一组对象作为响应。简单的问题,但遗憾的是不容易找到答案:如何在 Azure 表存储中进行多次插入,即为从 HTTP 响应返回的每个数组项插入一行?

我应该以某种方式使用“For Each”吗?在此输入图像描述

或者我应该解析 JSON,然后执行 For Each 操作?

python binary-tree

5
推荐指数
0
解决办法
318
查看次数

JavaScript 从数组构建不完整二叉树

这似乎是一个重复的问题,但我无法在 SOF 或其他地方找到我的问题的答案。

我想从Array和一个非空根节点构建一个不完整的二叉树,在JavaScript中,value 代表子树,而不是 value = 的子树。nullnullnull

预期结果:

TreeNode {
  val: 1,
  left:
   TreeNode {
     val: 2,
     left: TreeNode { val: 4, left: null, right: null },
     right: null },
  right:
   TreeNode {
     val: 3,
     left: null,
     right: TreeNode { val: 5, left: null, right: null } } }
Run Code Online (Sandbox Code Playgroud)

上面的预期输出可以手动完成,如下所示:

TreeNode {
  val: 1,
  left:
   TreeNode {
     val: 2,
     left: TreeNode { val: 4, left: null, right: null }, …
Run Code Online (Sandbox Code Playgroud)

javascript binary-tree

5
推荐指数
1
解决办法
1069
查看次数