Skip to content

Commit 1abb94f

Browse files
Added check tree type functions
1 parent d61c238 commit 1abb94f

18 files changed

+103
-0
lines changed

src/.vs/Binary-Search-Tree/v17/.suo

3 KB
Binary file not shown.
8 KB
Binary file not shown.
Binary file not shown.

src/BSTree.h

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,107 @@ class BSTree {
202202
}
203203
}
204204

205+
bool FullBinaryTree(Node<DT>* temp) {
206+
207+
if (!temp) {
208+
return true;
209+
}
210+
if (!(temp->right) && !(temp->left)) {
211+
return true;
212+
}
213+
else if (temp->right != NULL && temp->left != NULL) {
214+
FullBinaryTree(temp->right);
215+
FullBinaryTree(temp->left);
216+
}
217+
else {
218+
return false;
219+
}
220+
}
221+
222+
bool PerfectBinaryTree(Node<DT>* temp) {
223+
224+
bool check = FullBinaryTree(temp);
225+
226+
if (temp == NULL) {
227+
return 1;
228+
}
229+
230+
int left = PerfectBinaryTree(temp->left);
231+
int right = PerfectBinaryTree(temp->right);
232+
233+
if (check) {
234+
if ((left == right)) {
235+
return true;
236+
}
237+
}
238+
else {
239+
return false;
240+
}
241+
}
242+
243+
int Count(Node<DT>* temp) {
244+
if (!temp) {
245+
return 0;
246+
}
247+
248+
return 1 + Count(temp->left) + Count(temp->right);
249+
}
250+
251+
bool CompleteBinaryTree(Node<DT>* temp, int curr = 0)
252+
{
253+
254+
int total = Count(root);
255+
if (!temp) {
256+
return true;
257+
}
258+
if (total <= curr) {
259+
return false;
260+
}
261+
CompleteBinaryTree(temp->right, ((2 * curr) + 2));
262+
CompleteBinaryTree(temp->left, ((2 * curr) + 1));
263+
}
264+
265+
bool BalancedBinaryTree(Node<DT>* temp) {
266+
267+
if (!temp) {
268+
return 1;
269+
}
270+
271+
int left = calculateHeight(temp->left);
272+
int right = calculateHeight(temp->right);
273+
274+
if (abs(right - left) <= 1) {
275+
if (BalancedBinaryTree(temp->left)) {
276+
if (BalancedBinaryTree(temp->right)) {
277+
return true;
278+
}
279+
}
280+
}
281+
else {
282+
return false;
283+
}
284+
}
285+
286+
bool DegenerateTree(Node<DT>* temp) {
287+
288+
if (temp->left) {
289+
if (temp->right) {
290+
return false;
291+
}
292+
else {
293+
DegenerateTree(temp->left);
294+
}
295+
}
296+
else {
297+
if (temp->right) {
298+
DegenerateTree(temp->right);
299+
}
300+
else {
301+
return true;
302+
}
303+
}
304+
}
305+
205306
~BSTree() {
206307
while (root != NULL) {
207308
remove(root->data);

src/main.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ int main() {
1313
t1.postOrderDisplay(t1.getRoot());
1414
cout << endl << "========== In Order Display ===========" << endl << endl;
1515
t1.inOrderDisplay(t1.getRoot());
16+
cout << "Is Tree a Full Binary Tree: " << t1.FullBinaryTree(t1.getRoot()) << endl;
1617
}
Binary file not shown.
-802 Bytes
Binary file not shown.
Binary file not shown.
Binary file not shown.

src/x64/Debug/Binary-Search-Tree.exe

0 Bytes
Binary file not shown.

src/x64/Debug/Binary-Search-Tree.ilk

504 KB
Binary file not shown.

src/x64/Debug/Binary-Search-Tree.log

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
 main.cpp
2+
F:\Uniii\Github Repositories\Binary-Search-Tree-Implementation\src\BSTree.h(220): warning C4715: 'BSTree<AccountsRecords>::FullBinaryTree': not all control paths return a value
23
F:\Uniii\Github Repositories\Binary-Search-Tree-Implementation\src\BSTree.h(148): warning C4715: 'BSTree<AccountsRecords>::traverseForRemove': not all control paths return a value
34
Binary-Search-Tree.vcxproj -> F:\Uniii\Github Repositories\Binary-Search-Tree-Implementation\src\x64\Debug\Binary-Search-Tree.exe

src/x64/Debug/Binary-Search-Tree.pdb

424 KB
Binary file not shown.

src/x64/Debug/main.obj

1.86 KB
Binary file not shown.

src/x64/Debug/vc143.idb

0 Bytes
Binary file not shown.

src/x64/Debug/vc143.pdb

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)