diff --git a/homework4/BiTree.cpp b/homework4/BiTree.cpp index 11f1f34..d99090d 100644 --- a/homework4/BiTree.cpp +++ b/homework4/BiTree.cpp @@ -1 +1,26 @@ #include "BiTree.h" + +bool BiTree::is_empty(BiTree *bt) { + if(bt==nullptr) { + return true; + } + return false; +} + +bool BiTree::is_leaf(BiTree *bt) { + if(bt->left==nullptr && bt->right==nullptr) { + return true; + } + return false; +} + +int BiTree::sum_leaf(BiTree *bt) { + if(is_empty(bt)) { + return 0; + } + if(is_leaf(bt)) { + return bt->data; + } + return sum_leaf(bt->left)+sum_leaf(bt->right); +} + diff --git a/homework4/BiTree.h b/homework4/BiTree.h index b63eb58..eb7c2b7 100644 --- a/homework4/BiTree.h +++ b/homework4/BiTree.h @@ -4,7 +4,14 @@ class BiTree { +public: + int data; + BiTree *left; + BiTree *right; + static bool is_empty(BiTree *bt); + static bool is_leaf(BiTree *bt); + static int sum_leaf(BiTree *bt); }; diff --git a/homework4/test1.cpp b/homework4/test1.cpp index e69de29..9b4b27e 100644 --- a/homework4/test1.cpp +++ b/homework4/test1.cpp @@ -0,0 +1,32 @@ +#include +#include"BiTree.h" +using namespace std; + +BiTree* createNode(int data) { + BiTree* newNode = new BiTree(); + newNode->data = data; + newNode->left = nullptr; + newNode->right = nullptr; + return newNode; +} + +void createTree(BiTree*& bt, int value) { + if (bt == nullptr) { + bt = createNode(value); + } else { + if (value < bt->data) { + createTree(bt->left, value); + } else if (value > bt->data) { + createTree(bt->right, value); + } + } +} + +int main() { + BiTree* root = nullptr; + for (int i = 0; i < 10; i++) { + createTree(root, i); + } + cout << BiTree::sum_leaf(root) << endl; + return 0; +} \ No newline at end of file