Detect next node at same level of a key in binary tree in kotlin

Kotlin program for Detect next node at same level of a key in binary tree. Here more solutions.

``````/*
Kotlin program for
Find the next node of the key at the same
level in the binary tree
*/
// Binary Tree node
class TreeNode
{
var data: Int;
var left: TreeNode ? ;
var right: TreeNode ? ;
constructor(data: Int)
{
// Set node value
this.data = data;
this.left = null;
this.right = null;
}
}
class BinaryTree
{
var root: TreeNode ? ;
var status: Int;
var result: TreeNode ? ;
constructor()
{
this.root = null;
this.status = -1;
this.result = null;
}
// Method which are find next node of same level
fun findNextNode(temp: TreeNode ? ,
level : Int, node: Int): Unit
{
if (temp != null)
{
if (this.status == -1 && temp.data == node)
{
// When found node value
this.status = level;
}
else if (this.status == level && this.result == null)
{
// Next node of same level
this.result = temp;
}
// Visit to left subtree
this.findNextNode(temp.left, level + 1, node);
// Visit to right subtree
this.findNextNode(temp.right, level + 1, node);
}
}
// This are handling the request of to finding next
// node in same level by given node
fun nextNode(node: Int): Unit
{
// Reset the result indicator
this.status = -1;
this.result = null;
// Find next node
this.findNextNode(this.root, 0, node);
println("\n Node : " + node);
print(" Result : ");
// Test Case
if (this.status == -1)
{
// Case A
// When node values are not exist
}
else if (this.result == null)
{
// Case B
println("None");
}
else
{
// Case C
// When next node are exist
println(this.result!!.data);
}
}
}
fun main(args: Array < String > ): Unit
{
// Create new tree
val tree: BinaryTree = BinaryTree();
/*
Make A Binary Tree
---------------------
1
/ \
/   \
/     \
2       4
/       / \
/       /   \
3      6     5
\      \   /
7      8 11

*/
// Add node in Binary Tree
tree.root = TreeNode(1);
tree.root?.left = TreeNode(2);
tree.root?.left?.left = TreeNode(3);
tree.root?.left?.left?.right = TreeNode(7);
tree.root?.right = TreeNode(4);
tree.root?.right?.right = TreeNode(5);
tree.root?.right?.right?.left = TreeNode(11);
tree.root?.right?.left = TreeNode(6);
tree.root?.right?.left?.right = TreeNode(8);
// Testing
tree.nextNode(3);
tree.nextNode(7);
tree.nextNode(6);
tree.nextNode(5);
tree.nextNode(8);
tree.nextNode(1);
}``````

Output

`````` Node : 3
Result : 6

Node : 7
Result : 8

Node : 6
Result : 5

Node : 5
Result : None

Node : 8
Result : 11

Node : 1
Result : None``````

Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.