我递归地加载马谱系数据.对于一些错误的数据集,我的递归永远不会停止......这是因为数据中有循环.
如何检测这些循环以停止重复?
我想到的是反复出现维持所有"访问过的"马匹的哈希表.但这会发现一些误报,因为一匹马可以在树上两次.
不可能发生的事情是,一匹马看起来像是父亲或祖父或自己的祖父.
给出一种特殊类型的树,其中所有树叶都标有标记,L其他树标记有N.每个节点可以有0个或最多2个节点.给出了树的前序遍历.
给出一个算法来从这个遍历构建树.
我正在尝试为学校做作业,我不知道如何处理输入.我在下面提供了一个关于作业背景的链接:
我对如何完成任务所要求的一切有一个大概的想法,但我不确定如何处理输入.
示例输入是:
A0
0
A00
ab000
这给出了一个输出:
树1:
无效!
树2:
高度:-1
路径长度:0
完整:是
后序:
树3:
高度:0
路长度:0
完整:是
后序:一个
树4:
高度:1条
的路径长度:1个
完整:是
后序:BA
我打算用Java做这件事.我的问题是,如果没有在输入文件中输入管道,如何将样本中的多行输入输入Windows cmd.exe行?因为按Enter键只会使用一行输入来运行程序,而不是创建一个新行.此外,由于分配是自动标记的,输入不能是交互式的,那么我如何知道何时停止阅读?
谢谢.
我正在为一个正在进行的软件工程课程的项目工作.目标是设计一个程序,该程序将使用遗传编程生成适合所提供的训练数据的数学表达式.
我刚刚开始研究这个项目,我正试图围绕如何创建一个允许用户定义的树高度的二叉树,并保持每个节点分离,以便在我到达时使交叉和变异更简单实施这些过程.
这是我到目前为止创建的节点类.请原谅我确信我明显缺乏经验.
public class Node
{
Node parent;
Node leftchild;
Node rightchild;
public void setParent(Node p)
{
parent = p;
}
public void setLeftChild(Node lc)
{
lc.setParent(this);
leftchild = lc;
}
public void setRightChild(Node rc)
{
rc.setParent(this);
rightchild = rc;
}
}
public class OperatorNode extends Node
{
char operator;
public OperatorNode()
{
double probability = Math.random();
if (probability <= .25)
{
operator = '+';
}
else if (probability > .25 && probability <= .50)
{
operator = '-'; …Run Code Online (Sandbox Code Playgroud) 是否有可能在O(log n)时间内从平衡二叉搜索树获得均匀分布的随机值(调用函数意味着它同样可能在树中获得任何值)?
我最初的想法是生成一个0,1或2的随机数.如果为0,则从当前节点取左路径,如果为1,则采用正确的路径,否则节点的值为随机值.如果您点击叶节点,请获取该节点的值.我不认为这会随机分发.
这是出于好奇,而不是针对特定的应用程序.
如果您需要任何澄清,请告诉我.
例如,如果你有树
1
/ \
2 5
/
3
Run Code Online (Sandbox Code Playgroud)
调用时,数字1,2,3和5将统一返回 int get_random_number()
澄清:所有其他正常的BST操作应保持为O(log n),如insert(),delete()等.
所以我需要帮助提出一个表达式,它总是会给我一个二进制树中子节点的父节点的位置.以下是我的老师将参加考试的问题示例:
"考虑一个包含10,000个节点的完整二叉树,使用从索引0开始的数组实现.通过从左到右一次从树中提取元素,按顺序填充数组.假设节点存储了其值在位置4999.该节点的父节点存储的值在哪里?"
我的老师没告诉我们如何解决这样的问题.她只是说"画一棵二叉树,找到一个模式." 我做到了这一点,但我无法想出任何东西!请帮忙.谢谢.
给定以(A,B)形式的多个元组,其中A是二叉树中的父级,B是子级,请查找输入是否有效。提供了4个错误条件:
如果违反多个有效条件,请按上述顺序打印条件。如果输入有效,则以串行表示形式打印树。例如:如果输入是(A,B),(B,C),(A,D),(C,E),则输出:(A(B(C(E())))(D))
我正在考虑通过联合查找数据结构来解决它,但无法对其进行编码。谁能帮助我了解c / c ++中的逻辑或伪代码
8
/ \
4 12
/ \ / \
3 6 2 1
/ \ / \ / / \
7 10 13 15 5 9 11
/
14
Run Code Online (Sandbox Code Playgroud)
我需要找到一棵树的祖父,在这个例子中,我只有一个祖父,12号(我需要他只有两三个孙子).
这是我到目前为止所尝试的:
int T(struct node * tree){
int t = 0;
if (tree == NULL)
return 0;
if (tree->left && tree->right)
{ //In this case i check if we NOT have all the four grandchildrens.
if (!((tree->left->left) && (tree->left->right) && (tree->right->left) && (tree->right->right)))
{
t = 1 + T(tree->left) + T(tree->right); …Run Code Online (Sandbox Code Playgroud) 专家F#3.0一书的第9章介绍了如何在遍历二叉树时使用延续传递样式来避免堆栈溢出.我编写的树遍历代码几乎与本书中的代码完全相同,但我仍然得到了堆栈溢出.我的代码如下:
type 'a Tree =
| Leaf of 'a
| Branch of 'a Tree * 'a Tree
let rec mkLeftLeaningTree n tree =
if n = 0 then
tree
else
Branch (mkLeftLeaningTree (n - 1) tree, Leaf "right")
let leftLeaningTree1 = Leaf "left"
let leftLeaningTree2 = mkLeftLeaningTree 30000 leftLeaningTree1
let leftLeaningTree3 = mkLeftLeaningTree 30000 leftLeaningTree2
let leftLeaningTree4 = mkLeftLeaningTree 30000 leftLeaningTree3
let leftLeaningTree5 = mkLeftLeaningTree 30000 leftLeaningTree4
let leftLeaningTree6 = mkLeftLeaningTree 30000 leftLeaningTree5
let sizeContAcc tree =
let rec …Run Code Online (Sandbox Code Playgroud) 我必须为树集编写一个模板.叶子的大小为0.当调用create_empty_set()时,它应该生成一个叶子,当你添加T数据时,叶子应该成为一个分支,它的值应该放在左边或右边.不允许重复.我在这里发布老师的指示:
So, you'll need three classes: a supertype SortedTree and two subtypes named Branch and Leaf.
LinkedList nodes carried little integers with them. For our set, we want to do something better: we wish
the set to be able to contain any kind of values. The way to accomplish this is to make use of templates:
a TreeSet<T> contains values of type T.
Where do the set's elements reside exactly? Each Branch node contains exactly one T, while the leaves …Run Code Online (Sandbox Code Playgroud) binary-tree ×10
algorithm ×3
c++ ×3
java ×2
.net ×1
c ×1
command-line ×1
f# ×1
genealogy ×1
graph ×1
input ×1
mono ×1
parent-child ×1
random ×1
templates ×1
tree ×1
treeset ×1
uncertainty ×1
union-find ×1