【问题标题】:Implementing Binary tree in java [closed]在java中实现二叉树[关闭]
【发布时间】:2016-01-25 18:48:44
【问题描述】:

我是数据结构的新手。我正在尝试使用链表实现二叉树。

我需要在实施时进行一些说明。

i)在树中插入一个新值,实现时是否要回溯和遍历树。

ii)请给我推荐用于搜索和删除值的案例。

iii)请建议我正确的材料来实现所有类型的树。

【问题讨论】:

  • 这更像是一个谷歌问题而不是一个 SO 问题..
  • @sinclair 我无法从谷歌获得正确的指导方针,这就是我在 SO 中发布的原因
  • 一棵树的 LinkedList 没有多大意义,因为一个节点在一棵树中有多个子节点,而一个 LinkedList 只有一个前向“链接”
  • @cricket_007 那么你能建议我实现二叉树或所有类型的树的最佳方法吗?
  • “最佳”是相对的。我更喜欢递归方法,这是“在 java 中实现二叉树”的 Google 结果algorithms.tutorialhorizon.com/…

标签: data-structures


【解决方案1】:

您的链接列表应显示如下内容:a->b->c->d->e->f-> ... 你的树看起来像最后的图片。 其中 a 是具有左孩子 b 和右孩子 c 的根。 b 有左孩子 d 和右孩子 e 并且 c 只有一个左孩子 f。

i) 您可以将新值放在链接列表的末尾。无需穿越树

ii) 我假设您的 Tree 不会是排序的二叉树。因此,要搜索值 k,您需要遍历整个链表。这将花费 O(n) 作为您的时间。

要删除一个变量,你可以删除链表中的节点,一切都会被转移。所以例如在上图中,如果你删除 d,你可以在图片中看到 f 将替换 d 的结果。

iii) 你能具体说明所有类型的树是什么意思吗?

希望这会有所帮助。

Deleting a node

【讨论】:

  • 你关于通过链表的二叉树的建议很好,在这里的二叉树中不需要知道左子或右子。但我想要一个适用于所有类型树的标准程序,它可能是二叉搜索树,n-ary 树等。例如:让我们考虑一棵二叉搜索树,考虑到左节点和右节点,插入节点将是不同的。请建议我如何处理它。即我需要父子之间的连接遍历
  • 如果左右孩子不同,那么在你的链表中,第n个节点的右孩子将是第(2n)个节点,它的左孩子将是第(2n+1)个节点.所以你可以找到每个节点的孩子。这是针对二叉树的。您可以将同一事物扩展为 n 叉树。例如,如果它是一棵 5-tree ,则第 n 个节点的子节点将是:5n-3、5n-2、5n-1、5n 和 5n+1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-10
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 2011-01-04
相关资源
最近更新 更多