gpt4 book ai didi

c++ - 用零填充的二叉树

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:45:44 25 4
gpt4 key购买 nike

我正在用 C++ 编写一棵二叉树(仅用于零或更大的数字),出于某种原因,除了头部之外的所有值似乎都为零(当我添加一个元素时),我不确定为什么会这样。这似乎很明显,但我已经盯着它看了 2 个小时,似乎无法弄清楚发生了什么。

这是我的 BinaryTree.cpp:

#include "BinaryTree.h"

BinaryTree::Node::Node(){
lChild = NULL;
rChild = NULL;
data = -1;
}

BinaryTree::Node::Node(int data){
lChild = NULL;
rChild = NULL;
data = data;
}

BinaryTree::BinaryTree(){
head = new Node();
}

BinaryTree::BinaryTree(int num){
head = new Node(num);
}

void BinaryTree::addElement(int data){
addElement(data, head);
}

void BinaryTree::addElement(int data, Node * node){

if( node -> data != -1){
if(node -> data > data){
if(node -> lChild){
addElement(data, node -> lChild);
}
else{
node ->lChild = new Node(data);
}
}
else{
if(node -> rChild){
addElement(data, node -> rChild);
}
else{
node -> rChild = new Node(data);
}
}
}
else{
node -> data = data;
}
}

这是我的 BinaryTree.h:

#ifndef __ConnectTree__BinaryTree__
#define __ConnectTree__BinaryTree__

#include <iostream>
class BinaryTree{

private:
class Node{
public:
int data;
Node * lChild;
Node * rChild;

Node();

Node(int data);

};

Node * head;

void addElement(int num, Node * node);

public:
BinaryTree();

BinaryTree(int num);

void addElement(int num);
};
#endif /* defined(__ConnectTree__BinaryTree__) */

这是我的 main.cpp,我在其中创建了一个二叉树对象并将对象插入到树中。

#include <iostream>
#include "BinaryTree.h"

int main(int argc, const char * argv[])
{

// insert code here...
std::cout << "Hello, World!\n";
BinaryTree t;

t.addElement(4);
t.addElement(10);
t.addElement(11);
t.addElement(9);
t.addElement(2);
t.addElement(1);
t.addElement(3);
return 0;
}

最佳答案

问题出在 BinaryTree::Node::Node(int data) 实现中的这一行:

data = data;

如果您仍然找不到,我会编辑我的答案,让您知道确切的问题。

关于c++ - 用零填充的二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22031560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com