class myNode
{
myNode next;
myNode prev;
int data;
myNode(int num)
{
next=null;
prev=null;
data=num;
}
myNode()
{
next=null;
prev=null;
}
}
class BST
{
myNode node;
BST()
{
node=new myNode();
}
BST(myNode node)
{
this.node=node;
}
void boundryNodeDisp(myNode node, boolean isLeftSubTree)
{
if(node==null)
return;
if(isLeftSubTree)
{
if(node.next==null && node.prev==null)
System.
out.
println(" "+node.
data); else if(node.prev==null)
{
System.
out.
println(" "+node.
data); boundryNodeDisp(node.next,true);
}
else if(node.next==null)
{
System.
out.
println(" "+node.
data); boundryNodeDisp(node.prev,true);
}
else
{
boundryNodeDisp(node.prev,true);
boundryNodeDisp(node.next,true);
}
}
else
{
if(node.next==null && node.prev==null)
System.
out.
println(" "+node.
data); else if(node.prev==null)
{
boundryNodeDisp(node.next,false);
System.
out.
println(" "+node.
data); }
else if(node.next==null)
{
boundryNodeDisp(node.prev,false);
System.
out.
println(" "+node.
data); }
else
{
boundryNodeDisp(node.prev,false);
boundryNodeDisp(node.next,false);
}
}
}
public static void main
(String[] args
) {
BST bsTree=new BST(new myNode(20));
bsTree.node.prev=new myNode(8);
bsTree.node.next=new myNode(22);
bsTree.node.next.next=new myNode(25);
bsTree.node.next.prev=new myNode(23);
bsTree.node.next.prev.next=new myNode(24);
System.
out.
println("--------------------------------------"); System.
out.
println(" "+bsTree.
node.
data); bsTree.boundryNodeDisp(bsTree.node.prev,true);
bsTree.boundryNodeDisp(bsTree.node.next,false);
}
}
Y2xhc3MgbXlOb2RlCnsKICAgIG15Tm9kZSBuZXh0OwogICAgbXlOb2RlIHByZXY7CiAgICBpbnQgZGF0YTsKICAgIG15Tm9kZShpbnQgbnVtKQogICAgewogICAgICAgIG5leHQ9bnVsbDsKICAgICAgICBwcmV2PW51bGw7CiAgICAgICAgZGF0YT1udW07CiAgICB9CiAgICBteU5vZGUoKQogICAgewogICAgICAgIG5leHQ9bnVsbDsKICAgICAgICBwcmV2PW51bGw7CiAgICB9Cn0KY2xhc3MgQlNUIAp7CiAgICBteU5vZGUgbm9kZTsKCUJTVCgpCgl7CgkJbm9kZT1uZXcgbXlOb2RlKCk7Cgl9CglCU1QobXlOb2RlIG5vZGUpCgl7CgkJdGhpcy5ub2RlPW5vZGU7Cgl9CiAgICB2b2lkIGJvdW5kcnlOb2RlRGlzcChteU5vZGUgbm9kZSwgYm9vbGVhbiBpc0xlZnRTdWJUcmVlKQogICAgewoJCWlmKG5vZGU9PW51bGwpCgkJCXJldHVybjsKCQlpZihpc0xlZnRTdWJUcmVlKQoJCXsJCgkJCWlmKG5vZGUubmV4dD09bnVsbCAmJiBub2RlLnByZXY9PW51bGwpCgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiAgIitub2RlLmRhdGEpOwoJCQllbHNlIGlmKG5vZGUucHJldj09bnVsbCkKCQkJewoJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICIrbm9kZS5kYXRhKTsKCQkJCWJvdW5kcnlOb2RlRGlzcChub2RlLm5leHQsdHJ1ZSk7CgkJCX0KCQkJZWxzZSBpZihub2RlLm5leHQ9PW51bGwpCQoJCQl7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiAgIitub2RlLmRhdGEpOwoJCQkJYm91bmRyeU5vZGVEaXNwKG5vZGUucHJldix0cnVlKTsKCQkJfQoJCQllbHNlCQoJCQl7CgkJCQlib3VuZHJ5Tm9kZURpc3Aobm9kZS5wcmV2LHRydWUpOwoJCQkJYm91bmRyeU5vZGVEaXNwKG5vZGUubmV4dCx0cnVlKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlpZihub2RlLm5leHQ9PW51bGwgJiYgbm9kZS5wcmV2PT1udWxsKQoJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICIrbm9kZS5kYXRhKTsKCQkJZWxzZSBpZihub2RlLnByZXY9PW51bGwpCgkJCXsKCQkJCWJvdW5kcnlOb2RlRGlzcChub2RlLm5leHQsZmFsc2UpOwoJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICIrbm9kZS5kYXRhKTsKCQkJfQoJCQllbHNlIGlmKG5vZGUubmV4dD09bnVsbCkJCgkJCXsKCQkJCWJvdW5kcnlOb2RlRGlzcChub2RlLnByZXYsZmFsc2UpOwoJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICIrbm9kZS5kYXRhKTsKCQkJfQoJCQllbHNlCQoJCQl7CgkJCQlib3VuZHJ5Tm9kZURpc3Aobm9kZS5wcmV2LGZhbHNlKTsKCQkJCWJvdW5kcnlOb2RlRGlzcChub2RlLm5leHQsZmFsc2UpOwoJCQl9CgkJfQogICAgfQogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykKICAgIHsKCQlCU1QgYnNUcmVlPW5ldyBCU1QobmV3IG15Tm9kZSgyMCkpOwogICAgICAgIGJzVHJlZS5ub2RlLnByZXY9bmV3IG15Tm9kZSg4KTsKICAgICAgICBic1RyZWUubm9kZS5uZXh0PW5ldyBteU5vZGUoMjIpOwogICAgICAgIGJzVHJlZS5ub2RlLm5leHQubmV4dD1uZXcgbXlOb2RlKDI1KTsKICAgICAgICBic1RyZWUubm9kZS5uZXh0LnByZXY9bmV3IG15Tm9kZSgyMyk7CiAgICAgICAgYnNUcmVlLm5vZGUubmV4dC5wcmV2Lm5leHQ9bmV3IG15Tm9kZSgyNCk7CgkJU3lzdGVtLm91dC5wcmludGxuKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigiICAgIitic1RyZWUubm9kZS5kYXRhKTsKCQlic1RyZWUuYm91bmRyeU5vZGVEaXNwKGJzVHJlZS5ub2RlLnByZXYsdHJ1ZSk7CgkJYnNUcmVlLmJvdW5kcnlOb2RlRGlzcChic1RyZWUubm9kZS5uZXh0LGZhbHNlKTsKCX0KfSAgICA=