From cca9948fea203da116713d3ab3f4384f267ac411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=A1=E5=9D=82=E6=98=B4?= Date: Wed, 20 Nov 2024 21:48:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=9E=E7=8E=B0=EF=BC=88?= =?UTF-8?q?=E4=B8=8D=E7=9F=A5=E9=81=93=E5=AF=B9=E4=B8=8D=E5=AF=B9?= =?UTF-8?q?=F0=9F=98=AD=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- homework4/BiTree.cpp | 25 +++++++++++++++++++++++++ homework4/BiTree.h | 7 +++++++ homework4/test1.cpp | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+) 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