#include<stdio.h>
#include<stdlib.h>
struct TreeNode
{
char data;
TreeNode* left;
TreeNode* right;
TreeNode* parent;
};
typedef struct TreeNode TreeNode;
TreeNode* createTreeNode(char data)
{
TreeNode* temp = (TreeNode *)malloc(sizeof(TreeNode));
temp->data = data;
temp->left = temp->right = temp->parent = NULL;
return temp;
}
int count_leaves(TreeNode* root)
{
if(root==NULL) return 0;
else if(root->left == NULL && root->right==NULL)
{
return 1;
}
else
return count_leaves(root->left) + count_leaves(root->right);
}
int count_nodes(TreeNode* root)
{
}
int main()
{
TreeNode* a = createTreeNode('A');
TreeNode* b = createTreeNode('B');
TreeNode* c = createTreeNode('C');
TreeNode* d = createTreeNode('D');
TreeNode* f = createTreeNode('F');
TreeNode* g = createTreeNode('G');
a->left = b;
b->parent = a;
a->right = c;
c->parent = a;
b->left = d;
d->parent = b;
c->left = f;
f->parent = c;
c->right = g;
g->parent = c;
TreeNode *root = a;
a = b = c = d = f = g = NULL;
printf("Number of Leaves: %d\n", count_leaves(root));
printf("Number of Nodes: %d\n", count_leaves(root));
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgpzdHJ1Y3QgVHJlZU5vZGUKewogICAgY2hhciBkYXRhOwogICAgVHJlZU5vZGUqIGxlZnQ7CiAgICBUcmVlTm9kZSogcmlnaHQ7CiAgICBUcmVlTm9kZSogcGFyZW50Owp9OwoKdHlwZWRlZiBzdHJ1Y3QgVHJlZU5vZGUgVHJlZU5vZGU7CgoKVHJlZU5vZGUqIGNyZWF0ZVRyZWVOb2RlKGNoYXIgZGF0YSkKewogICAgVHJlZU5vZGUqIHRlbXAgPSAoVHJlZU5vZGUgKiltYWxsb2Moc2l6ZW9mKFRyZWVOb2RlKSk7CiAgICB0ZW1wLT5kYXRhID0gZGF0YTsKICAgIHRlbXAtPmxlZnQgPSB0ZW1wLT5yaWdodCA9IHRlbXAtPnBhcmVudCA9IE5VTEw7CiAgICByZXR1cm4gdGVtcDsKfQoKCmludCBjb3VudF9sZWF2ZXMoVHJlZU5vZGUqIHJvb3QpCnsKICAgIGlmKHJvb3Q9PU5VTEwpIHJldHVybiAwOwogICAgZWxzZSBpZihyb290LT5sZWZ0ID09IE5VTEwgJiYgcm9vdC0+cmlnaHQ9PU5VTEwpCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIGNvdW50X2xlYXZlcyhyb290LT5sZWZ0KSArIGNvdW50X2xlYXZlcyhyb290LT5yaWdodCk7Cn0KCmludCBjb3VudF9ub2RlcyhUcmVlTm9kZSogcm9vdCkKewoKfQoKCmludCBtYWluKCkKewogICAgVHJlZU5vZGUqIGEgPSBjcmVhdGVUcmVlTm9kZSgnQScpOwogICAgVHJlZU5vZGUqIGIgPSBjcmVhdGVUcmVlTm9kZSgnQicpOwogICAgVHJlZU5vZGUqIGMgPSBjcmVhdGVUcmVlTm9kZSgnQycpOwogICAgVHJlZU5vZGUqIGQgPSBjcmVhdGVUcmVlTm9kZSgnRCcpOwogICAgVHJlZU5vZGUqIGYgPSBjcmVhdGVUcmVlTm9kZSgnRicpOwogICAgVHJlZU5vZGUqIGcgPSBjcmVhdGVUcmVlTm9kZSgnRycpOwoKICAgIGEtPmxlZnQgPSBiOwogICAgYi0+cGFyZW50ID0gYTsKCiAgICBhLT5yaWdodCA9IGM7CiAgICBjLT5wYXJlbnQgPSBhOwoKICAgIGItPmxlZnQgPSBkOwogICAgZC0+cGFyZW50ID0gYjsKCiAgICBjLT5sZWZ0ID0gZjsKICAgIGYtPnBhcmVudCA9IGM7CgogICAgYy0+cmlnaHQgPSBnOwogICAgZy0+cGFyZW50ID0gYzsKCiAgICBUcmVlTm9kZSAqcm9vdCA9IGE7CgogICAgYSA9IGIgPSBjID0gZCA9IGYgPSBnID0gTlVMTDsKCiAgICBwcmludGYoIk51bWJlciBvZiBMZWF2ZXM6ICVkXG4iLCBjb3VudF9sZWF2ZXMocm9vdCkpOwogICAgcHJpbnRmKCJOdW1iZXIgb2YgTm9kZXM6ICVkXG4iLCBjb3VudF9sZWF2ZXMocm9vdCkpOwogICAgcmV0dXJuIDA7Cn0K