#include<bits/stdc++.h>
using
namespace
std;
struct
Node
{
int
data;
struct
Node *left, *right;
};
struct
Node* newNode(
int
data)
{
struct
Node* newNode =
new
Node;
newNode->data = data;
newNode->left = newNode->right = NULL;
return
(newNode);
}
Node* LeafNodesWithValueK(Node* root,
int
k)
{
if
(root == NULL)
return
nullptr;
root->left = LeafNodesWithValueK(root->left, k);
root->right = LeafNodesWithValueK(root->right, k);
if
(root->data == k &&
root->left == NULL &&
root->right == NULL)
{
return
nullptr;
}
return
root;
}
void
postOrder(Node* root)
{
if
(root == NULL)
return
;
cout << root->data <<
" "
;
postOrder(root->left);
postOrder(root->right);
}
int
main()
{
struct
Node* root = newNode(4);
root->left = newNode(5);
root->right = newNode(5);
root->left->left = newNode(3);
root->left->right = newNode(1);
root->right->right = newNode(5);
cout <<
"Nodes in postorder before deletion \n"
;
postOrder(root);
cout <<
"\n"
;
int
k = 5;
LeafNodesWithValueK(root, k);
cout <<
"Nodes in post order after "
"required deletion \n"
;
postOrder(root);
return
0;
}