我正在研究二叉树,想知道是否有任何算法可以对树进行洗牌并按级别进行排序?
例如我有一个数组如下:
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);
已经定义了一个创建树的构造函数,但现在我需要创建两个函数,它们将随机播放和重置,所以是否有我可以阅读以实现的算法?
最佳答案
可以使用以下算法从一组值构造随机二叉树:
输入:值
- 随机选择一个值作为根节点 - 例如 r。
- r->left = 从值 [0..r] 递归构建随机二叉树。
- r->right = 从值 [r+1..values.length()-1] 递归构建随机二叉树。
- 返回 r.
您是否正在考虑对已创建的二叉树进行混洗?
关于algorithm - 二叉搜索树改组和重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4585533/