algorithm - 二叉搜索树改组和重置

标签 algorithm data-structures binary-tree

我正在研究二叉树,想知道是否有任何算法可以对树进行洗牌并按级别进行排序?

例如我有一个数组如下:

int[] values = new int[16] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
BinaryTree<int> tree = new BinaryTree<int>(values);

已经定义了一个创建树的构造函数,但现在我需要创建两个函数,它们将随机播放和重置,所以是否有我可以阅读以实现的算法?

最佳答案

可以使用以下算法从一组值构造随机二叉树:

输入:值

  1. 随机选择一个值作为根节点 - 例如 r。
  2. r->left = 从值 [0..r] 递归构建随机二叉树。
  3. r->right = 从值 [r+1..values.length()-1] 递归构建随机二叉树。
  4. 返回 r.

您是否正在考虑对已创建的二叉树进行混洗?

关于algorithm - 二叉搜索树改组和重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4585533/

相关文章:

c - 实现二叉搜索树

java - 通过数据结构(队列、堆栈、包)进行迭代

python - 在python中查找每个二叉树级别的元素

algorithm - 计算二叉树中每个节点的子树大小的运行时间是多少

MySQL修改前序树遍历——根据节点获取子树

java - 这个算法的时间复杂度是多少

python - 将大块文本转换为图像的算法? (由图像边缘定义)

c++ - 空间查询点的第 k 个最近邻点

algorithm - 在访问每个单元格一次后到达矩阵中的目的地

java - 如何在我的对象层次结构中找到循环?