写了个tostring

This commit is contained in:
2024-11-21 23:09:02 +08:00
parent f8d136fd8e
commit fdbef4b3cc
3 changed files with 45 additions and 19 deletions
+29 -9
View File
@@ -1,38 +1,39 @@
#include "BiTree.h"
#include <sstream>
bool BiTree::is_empty(BiTree *bt) {
if(bt==nullptr) {
if (bt == nullptr) {
return true;
}
return false;
}
bool BiTree::is_leaf(BiTree *bt) {
if(bt->left==nullptr && bt->right==nullptr) {
if (bt->left == nullptr && bt->right == nullptr) {
return true;
}
return false;
}
int BiTree::sum_leaf(BiTree *bt) {
if(is_empty(bt)) {
if (is_empty(bt)) {
return 0;
}
if(is_leaf(bt)) {
if (is_leaf(bt)) {
return bt->data;
}
return sum_leaf(bt->left)+sum_leaf(bt->right);
return sum_leaf(bt->left) + sum_leaf(bt->right);
}
BiTree* BiTree::createNode(int data) {
BiTree* newNode = new BiTree();
BiTree *BiTree::createNode(int data) {
BiTree *newNode = new BiTree();
newNode->data = data;
newNode->left = nullptr;
newNode->right = nullptr;
return newNode;
}
void BiTree::insertNode(BiTree*& bt, int value) {
void BiTree::insertNode(BiTree *&bt, int value) {
if (bt == nullptr) {
bt = createNode(value);
} else {
@@ -42,4 +43,23 @@ void BiTree::insertNode(BiTree*& bt, int value) {
insertNode(bt->right, value);
}
}
}
}
void toStringHelper(const BiTree *node, std::ostringstream &oss, const std::string &prefix, bool isLeft) {
if (node != nullptr) {
oss << prefix;
oss << (isLeft ? "|--" : "|--") << node->data << "\n";
std::string newPrefix = prefix + (isLeft ? "| " : " ");
toStringHelper(node->left, oss, newPrefix, true);
toStringHelper(node->right, oss, newPrefix, false);
}
}
std::string BiTree::toString() {
std::ostringstream oss;
toStringHelper(this, oss, "", false);
return oss.str();
}