草庐IT

binary-tree

全部标签

c++ - C++ 二叉树类需要什么

我主要用C编程。如果我用C++创建一个二叉树类,我是否需要包含一个指向根的指针作为属性,以便我可以删除析构函数中的每个节点,还是通常以其他方式完成?我需要构造函数吗?除此之外,我只有数据、左、右和方法,对吗? 最佳答案 通常,C++对象的设计目的不是为了能够将自己从容器中删除。相反,容器(在本例中为您的二叉树)被视为对象的所有者。当容器决定删除节点时(可能基于您的代码的某些请求),将调用析构函数。拥有一个指向二叉树根的指针会违反封装。理想情况下,您希望您的对象也能够插入到其他容器中,例如vector。例如,标准类型std::stri

c++ - 如何从 boost::property_tree 获取枚举?

如何从boost::property_tree中获取枚举?这是我的“非工作”示例。配置文件EMISSION::EMIT142main.cpp#include#include#includeintmain(){enumclassEMISSION{EMIT1,EMIT2};enumEMISSIONmyEmission;//InitializetheXMLfileintoproperty_treeboost::property_tree::ptreept;read_xml("config.xml",pt);//testenum(SUCCESS)myEmission=EMISSION::EMI

c++ 将带有 ":"的十六进制字符串转换为原始 "binary"字符串

我有以下代码将加密的密文转换为可读的十六进制格式:std::stringconvertToReadable(std::stringciphertext){std::stringstreamoutText;for(unsignedinti=0;i(ciphertext[i]))这个函数的可读结果是这样的:56:5e:8b:a8:04:93:e2:f1:5c:20:8b:fd:f5:b7:22:0b:82:42:46:58:9b:d4:c1:8e:ac:62:85:04:ff:7f:c6:d3:现在我需要返回,将可读格式转换为原始的密文以便对其进行解密:std::stringconvert

c++ - 访问声明已弃用,取而代之的是使用声明;建议 : add the ‘using’ keyword

我回到了我以前的C++学校作业中,它实现了一个二叉树。我有一个文件(Tree.cpp),其中包含用于插入、查找、删除等节点的函数。在顶部,我有“usingnamespacestd;”。我收到的警告是由另一个文件SymTab.hpp引起的,它看起来像这样:#ifndefSYMTAB_H#defineSYMTAB_H#include#include"Tree.hpp"usingnamespacestd;templateclassSymTab:privateTree{public:Tree::Insert;Tree::Lookup;Tree::Remove;Tree::Write;Tree:

C++ 元编程 - 编译时搜索树

更新:抱歉混淆了术语-我不需要二叉树,而是线段树或区间树。想象一下,每次执行我的程序时,我都必须静态初始化搜索树。Treet;t.add(10,'Apple');t.add(20,'Pear');t.add(50,'Orange');...t.add(300,'Cucumber');..//thenIuseit.intkey=15;Strings=t.lookup(key)//Returns'Apple'(asthekeyisbetween10and20)树中的键和值是“静态的”、硬编码的,但必须不时维护。是否存在元编程技巧如何在编译期间将键值组织到二叉搜索树(或跳跃列表)中?例如,整

c++ - 如何从内存中删除二叉搜索树?

我有一个BST,它是C++中的链表。我如何从内存中删除整个内容?它会通过类函数完成吗? 最佳答案 只删除child:structTreeNode{TreeNode*l,*r,*parent;Datad;TreeNode(TreeNode*p){l=nullptr;r=nullptr;parent=p;}TreeNode(TreeNodeconst&)=delete;~TreeNode(){deletel;//deletedoesnothingifptris0deleter;//orrecursesifthere'sanobject}

c++ - 二叉树高度函数

我正在研究一个函数来查找二叉搜索树的高度。我找到了一个看起来应该有效的方法,但我一直收到此错误,我不知道它有什么问题:PA5.exe中0x00903417处未处理的异常:0xC0000005:访问冲突读取位置0x00000004。这是我的高度函数...templateintBST::height(){returndisplayHeight(mRootNode);}templateintBST::displayHeight(BST*node){if(node=NULL){return0;}intleft=displayHeight(node->mLeft);intright=displa

c++ - "C++ compilers use a binary object layout"这句话的含义和用途是什么

在浏览此C++常见问题解答时https://isocpp.org/wiki/faq/mixing-c-and-cpp#cpp-objs-passed-to-c我遇到了语句MostC++compilersuseabinaryobjectlayoutthatcausesthisconversiontohappenwithmultipleinheritanceand/orvirtualinheritance.我无法理解它的含义和应用。根据C++FAQ,此对象布局机制有助于C++编译器进行以下检查InC++itiseasytocheckifaDerived*calleddppointstoth

c++ - ifstream::binary 和 ios::binary 之间有区别吗?

我见过这样写的代码:ifstreamfin;fin.open("largefile.dat",ifstream::binary|ifstream::in);现在这让我感到困惑,上面的代码和下面使用ios::binary和ios::in作为替换的代码之间有什么区别吗?ifstreamfin;fin.open("largefile.dat",ios::binary|ios::in); 最佳答案 没有区别。这些名称继承自虚拟基地std::ios_base从中派生出具体的流类。 关于c++-if

c++ - 将二叉树保存到文件

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。关于您编写​​的代码问题的问题必须在问题本身中描述具体问题—并且包括有效代码以重现它。参见SSCCE.org寻求指导。关闭9年前。社区在2天前审查了是否重新打开这个问题,然后将其关闭:原始关闭原因未解决Improvethisquestion我有一个非平衡(不是二进制搜索)二叉树需要将其编码(稍后解码)到txt文件。我怎样才能有效地做到这一点?我找到了这个link它谈论类似(相同)的问题,但对我来说很明显