你们使用哪些库来实现通用数据结构,如链表,二叉树等?
什么是最常见,最有效的图书馆?你能说出一些名字吗?
如何计算二叉树中正确子项的数量?
这意味着我只希望孩子被标记为正确.
防爆.
(Left | Right)
F(Root)
G | H
T U | I J
Run Code Online (Sandbox Code Playgroud)
合适的孩子是U,H和J.
找到这些算法的算法是什么?
如何使用O(1)额外空间将二叉树转换为二叉搜索树?
我试图通过首先构建一个数组(inorder)来平衡BST,然后从我的数组重建整个树.
我有:
public void toArray(E[] a) {
toArray(root, a, 0);
}
/*
* Adds all elements from the tree rooted at n in inorder to the array a
* starting at a[index].
* Returns the index of the last inserted element + 1 (the first empty
* position in a).
*/
private int toArray(BinaryNode<E> node, E[] a, int index) {
if (node.left != null) {
index = toArray(node, a, index);
}
a[index] = node.element;
index++;
if (node.right != null) { …Run Code Online (Sandbox Code Playgroud) 我必须用Java创建一个算术求值器.为此,我必须在二叉树中解析一个algebric表达式,然后计算并返回结果.因此,对于第一步,我如何解析二叉树中的表达式?我知道这个理论,但我的问题是如何用Java做到这一点.我阅读了以下帖子 创建递归二叉树
但我错过了基本的技巧或方法.我知道如何创建一个节点(我有一个类,其方法有returnNodeValue,isLeaf,isDoubleNode,isSingleNode等),但我想我需要一个方法在二叉树中插入一个节点来实现我想要的东西.有任何想法吗?
我有一些代码
tree1(tree(1,
tree(2,
tree(3,nil,nil),
tree(4,nil,nil)),
tree(5,
tree(6,nil,nil),
tree(7,nil,nil))
)
).
rbt_count_nodes(e,0):-!.
rbt_count_nodes(t(_,L,R),N):-
rbt_count_nodes(L,NL),
rbt_count_nodes(R,NR),
N=NL+NR+1.
?-tree1(T),rbt_count_nodes(T,N),write(N).
Run Code Online (Sandbox Code Playgroud)
但目标总是回归号码为什么?
我的一个朋友有以下面试问题,我们都不确定正确的答案是什么.有没有人知道如何处理这个问题?
给定不平衡二叉树,描述一种算法以随机选择节点,使得每个节点具有相同的被选择概率.
我有一个包含学生信息的文本文件.我使用实现comparator接口的比较器类对这些信息进行排序.这在调用时排序很好Collection.Sort();
然后我comparator在binarySearch()方法中使用.我有一个int索引,它返回二进制搜索的索引.调试后似乎没有binarySearch()正确排序数据,因为我得到的索引为0表示501是正确的,索引为1表示503表示不正确,索引表示为-2表示502.是binarySearch不是正确使用比较器因此,不会对数据进行适当的排序,因为它以原始形式返回数据.
=================================================
First Name: Mark
Last Name: Evans
Registration: 501
Subject: Maths
Assignment: 1
Homewok Mark: 70
Exam Mark: 80
Assignment: 2
Homewok Mark: 70
Exam Mark: 40
Subject: English
Assignment: 1
Homewok Mark: 40
Exam Mark: 50
Assignment: 2
Homewok Mark: 60
Exam Mark: 70
Subject: Science
Assignment: 1
Homewok Mark: 50
Exam Mark: 60
Assignment: 2
Homewok Mark: 80
Exam Mark: 45
Assignment: 3
Homewok Mark: …Run Code Online (Sandbox Code Playgroud) 给定以下数据类型定义:
data FormTree = Empty | Node FormTree FormTree deriving Show
Run Code Online (Sandbox Code Playgroud)
我想编写一个函数,它生成一个无限列表,其中包含按长度排序的所有可能的树,例如节点的数量.
下面的代码几乎可以满足我的需要,但它只是通过每次插入额外的节点来降低右侧的树,但我需要它在两边之间交替.
allPossibleTrees :: [FormTree]
allPossibleTrees = Empty : [Node x y | x <- recursive, y <- recursive]
where recursive = allPossibleTrees
Run Code Online (Sandbox Code Playgroud)
执行
take 5 allPossibleTrees
Run Code Online (Sandbox Code Playgroud)
得到:
[Empty,Node Empty Empty,Node Empty (Node Empty Empty),Node Empty (Node Empty (Nodes Empty Empty)),Node Empty (Node Empty (Node Empty (Node Empty Empty)))]
Run Code Online (Sandbox Code Playgroud)
但它应该是这样的:
[Empty,Node Empty Empty,Node (Node Empty Empty) Empty,Node Empty (Node Empty Empty),Node (Node Empty Empty) (Node Empty Empty)]
Run Code Online (Sandbox Code Playgroud) 我试图将这个递归函数转换为非递归函数.这是来自二叉搜索树的搜索函数.我知道这是很自然,使之递归的,但学习的目的,我想使其非递归.我怎么能这样做?提前致谢!
bool Search(BstNode* root, string data) {
if (root == NULL) return false;
else if (root->data == data) return true;
else if (data <= root->data) return Search(root->left, data);
else return Search(root->right, data);
}
Run Code Online (Sandbox Code Playgroud) binary-tree ×10
java ×3
algorithm ×2
recursion ×2
big-o ×1
c++ ×1
catalan ×1
collections ×1
haskell ×1
linked-list ×1
parsing ×1
prolog ×1
rebuild ×1
sorting ×1
tree ×1