草庐IT

binary-tree

全部标签

c++ - 二叉搜索树不起作用

我在构建二叉树时遇到了一个非常令人困惑的问题。显然这应该是一项简单的任务,但不知何故我可能会弄乱其中的指针。这里是简化代码(当然不是真正的代码):#include#includeusingnamespacestd;#defineDIM12typedefenum{LEFT,RIGHT}direction;typedefchartName[MAX_NAME_LEN+1];structRectangle{tName_name;structRectangle*_binSon[DIM1];};structRectangle*recTree;voidinsertRectToTree(charstr

c++ - 模板中的二叉树

所以我想编写一个代码,创建一个二叉树,保存数据,例如像1,6,2,10,8这样的整数,在弹出时我得到最大的数字,然后它被删除树,在推送时我可以插入一个新元素。这应该在模板中,这样我就可以轻松更改我想要保存在树中的数据类型。现在我得到了这棵树,没有模板它工作得很好,我可以添加项目,我可以打印它们,但是当我试图把它放在模板中时,我得到以下错误:类的使用模板需要模板参数列表。可能是什么问题呢?也许我做的完全错了。欢迎提出任何建议。到目前为止,我得到了以下代码:#includeusingnamespacestd;templateclassBinaryTree{structNode{Tdata;

c++ - 霍夫曼码编码遍历

我正在尝试对霍夫曼树进行编码。我的树是正确的。我只需要弄清楚如何修复我的递归函数以正确创建表。感谢我能得到的任何帮助。structCode{charletter;stringcode;};voidcreateCode(BTree*root,stringcodeStr,vector&table){if(root->getRightChild()==NULL&&root->getLeftChild()==NULL){Codecode;code.letter=root->getData().getLetter();code.code=codeStr;table.push_back(code)

c++ - 二叉树的深度复制构造函数

我正在尝试用C++创建我的二叉树数据结构的深层拷贝。问题是我正在使用的代码似乎只给我一个浅拷贝(这似乎会导致我的解构函数出现问题)。下面的代码是我的二叉树复制构造函数:BinaryTreeStorage::BinaryTreeStorage(constBinaryTreeStorage©tree):root(NULL){root=copytree.root;copyTree(root);}BinaryTreeStorage::node*BinaryTreeStorage::copyTree(node*other){//ifnodeisempty(atbottomofbinary

【机器学习基础】决策树(Decision Tree)

🚀个人主页:为梦而生~关注我一起学习吧!💡专栏:机器学习欢迎订阅!后面的内容会越来越有意思~⭐特别提醒:针对机器学习,特别开始专栏:机器学习python实战欢迎订阅!本专栏针对机器学习基础专栏的理论知识,利用python代码进行实际展示,真正做到从基础到实战!💡往期推荐:【机器学习基础】机器学习入门(1)【机器学习基础】机器学习入门(2)【机器学习基础】机器学习的基本术语【机器学习基础】机器学习的模型评估(评估方法及性能度量原理及主要公式)【机器学习基础】一元线性回归(适合初学者的保姆级文章)【机器学习基础】多元线性回归(适合初学者的保姆级文章)【机器学习基础】对数几率回归(logistic回

c++ - 如何使用 json 解析器的 boost property_tree 创建空数组节点

我正在尝试在json中创建一个数组节点,其输出如下所示:{node:["12","13"]}但是当数组为空时,它会输出这样的:{node:""}这不是我想要的,我需要这个:{node:[]}我该怎么做?而且我不需要在数字周围加上双引号("")。谁能帮忙?我的代码如下:boost::property_tree::ptreept;boost::property_tree::ptreearray;for(vector::const_iteratoriter=v.begin();iter!=v.end();++iter){boost::property_tree::ptreenode;node

c++ - 如何实现缓存友好的动态二叉树?

根据多个来源,包括Wikipedia,最常用的两种实现二叉树的方法是:节点和指针(或引用),其中每个节点明确拥有其子节点。数组,其中子节点的位置由其父节点的索引隐式给出。第二个在内存使用和引用位置方面明显更胜一筹。但是,如果您希望以可能使树不平衡的方式允许从树中插入和删除,这可能会导致问题。这是因为此设计的内存使用量是树深度的指数函数。假设你想支持这样的插入和删除。如何实现树以便树遍历充分利用CPU缓存。我正在考虑为节点创建一个对象池并将它们分配到一个数组中。这样,节点将靠在一起->因此具有良好的引用位置。但如果节点的大小与缓存行的大小相同,这有意义吗?如果您的L1行大小为64字节并且

c++ - std::binary_function - 调用不匹配?

包括#includeusingnamespacestd;intmain(){binary_functionoperations[]={plus(),minus(),multiplies(),divides()};doublea,b;intchoice;cout>a>>b;cout>choice;cout我得到的错误是:Calcy.cpp:Infunction‘intmain()’:Calcy.cpp:17:error:nomatchforcallto‘(std::binary_function)(double&,double&)’谁能解释为什么我会收到此错误以及如何消除它?

c++ - 寻找完美四叉树的大小

我需要找到完美四叉树的大小。这意味着我有1个根节点split成4个节点,split成4个节点等。所以高度为1的四叉树的大小为1高度2=尺寸5(1+4)高度3=尺寸21(1+4+16)高度4=尺寸85(1+4+16+64)等..我知道完美二叉树的大小可以通过以下公式找到:size=2^(height+1)-1所以我相信四叉树也存在类似的等式。那是什么? 最佳答案 这是一个geometricseries.所以相关的公式是:S=a*(1-r^n)/(1-r)其中a是第一个值,r是公比,n是项数,^表示“to-the-power-of”。

c++ - 按升序递归输出二叉树

我当前关于如何输出我的二叉树的实现在g++中出现错误,按照Conditionaljumpormovedependsonuninitialisedvalue(s)我目前的实现是:voidFoo::output(ostream&s,constNode*p){if(p){output(s,p->left);sinfo;output(s,p->right);}}Node是一个基本的结构体,有一个左右指针和一个整型信息变量。ostream就是cout错误信息非常直接,它不喜欢我让它“跑掉”。我的问题有两个:为什么这是不合适的?什么都没有改变,我不知道它会带来什么伤害。执行此操作的正确方法是什么?