-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTreeNode.cpp
More file actions
36 lines (29 loc) · 886 Bytes
/
Copy pathTreeNode.cpp
File metadata and controls
36 lines (29 loc) · 886 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "TreeNode.h"
// Implement class Encoder
TreeNode::TreeNode() {
left = right = nullptr;
}
TreeNode::TreeNode(char l, double f) {
letter = l;
freq = f;
left = right = nullptr;
}
// Generate tree
TreeNode TreeNode::generateTree(TreeNode newNode1, TreeNode newNode2) {
shared_ptr<TreeNode> left = make_shared<TreeNode> (newNode1);
shared_ptr<TreeNode> right = make_shared<TreeNode> (newNode2);
TreeNode node(reference(newNode1, newNode2), left -> freq + right -> freq);
node.left = left;
node.right = right;
return node;
}
char TreeNode::reference(TreeNode newNode1, TreeNode newNode2) {
if(newNode1.letter < newNode2.letter) {
return newNode1.letter;
} else {
return newNode2.letter;
}
}
bool TreeNode::isLeaf(shared_ptr<TreeNode> root) {
return (root -> left == nullptr && root -> right == nullptr);
}