接受的答案可以制作一个完美的树(这也是一个完整的树)。虽然它不能在不完美的情况下制作一个完整的树。不过,这是对我的要求最接近的答案。为了让竞争变得不完美,您可以移除树最右边的叶子。
1.问题:
试图将 aBinary Search Tree
变成Complete Binary Search Tree
. 我可以找到很多 a 的代码示例Complete Binary Tree
,但没有Complete Binary Search Tree
。插入作为二叉搜索树应该工作。但是这种插入方式并不是完全树。如果我添加一堆随机数,它不会是一个完整的树。我怎样才能使代码插入到树,但同时是一个完整的二叉搜索树?
我将不胜感激代码示例。我觉得从理论上理解它一点也不难,但很难用代码实现它。
2. 我试过的:
以层级顺序添加节点。
While 循环“只要高度不是 6 就插入,并且除叶子之外的所有节点都是完整节点”。
“如果值大于父级且左子级不为空,则仅添加到右子级”。
Arrays
并LinkedLists
添加自。
3.我如何插入:
private BinaryNode<AnyType> insert( AnyType x, BinaryNode<AnyType> t )
{
if( t == null )
return new BinaryNode<>( x, null, null);
int compareResult = x.compareTo( t.element );
if (compareResult < 0)
t.left = insert(x, t.left);
else if (compareResult > 0)
t.right = insert(x, t.right);
else
; // Duplicate; do nothing
return t;
}
的AnyType
是将被插入的值,则BinaryNode
是当前节点。
4. 程序能做什么:
插入和移除。
查找高度、最小值、最大值或特定节点。
Preorder、Postorder、Levelorder 和 Inorder 搜索。
获取完整节点数、所有节点数和叶子数。
相关分类