Print all nodes that are at distance k from a leaf node
Here given code implementation process.
import java.util.HashSet;
import java.util.ArrayList;
/*
Java Program
Print all nodes that are at distance k from a leaf node
*/
// Binary Tree node
class TreeNode
{
public int data;
public TreeNode left;
public TreeNode right;
public TreeNode(int data)
{
// Set node value
this.data = data;
this.left = null;
this.right = null;
}
}
public class BinaryTree
{
public TreeNode root;
public BinaryTree()
{
// Set initial value
this.root = null;
}
public void findResult(TreeNode node,
HashSet < TreeNode > result,
ArrayList < TreeNode > path, int k)
{
if (node != null)
{
if (node.left == null && node.right == null)
{
if (path.size() >= k)
{
// Add k distance element
result.add(path.get(path.size() - k));
}
return;
}
// Add path node
path.add(node);
// Visit left and right subtree using recursively
findResult(node.left, result, path, k);
findResult(node.right, result, path, k);
// Remove last node in path
path.remove(path.size() - 1);
}
}
// Handles the request of finding kth from left node to root
public void distanceKfromLeft(int k)
{
if (k < 0)
{
return;
}
// This is used to collect unique result
HashSet < TreeNode > result = new HashSet < TreeNode > ();
// This is used to track the path from root to leaf node
ArrayList < TreeNode > path = new ArrayList < TreeNode > ();
// Find nodes
findResult(this.root, result, path, k);
System.out.println("\n Given K " + k);
if (result.size() == 0)
{
// When result not exists
System.out.print(" No result \n");
}
else
{
// Display calculated result
for (TreeNode node: result)
{
System.out.print(" " + node.data);
}
}
}
public static void main(String[] args)
{
BinaryTree tree = new BinaryTree();
/*
Binary Tree
------------
10
/ \
-2 5
/ \ / \
1 3 7 2
/ \ \
9 8 4
/
11
*/
tree.root = new TreeNode(10);
tree.root.left = new TreeNode(-2);
tree.root.right = new TreeNode(5);
tree.root.right.right = new TreeNode(2);
tree.root.right.right.right = new TreeNode(4);
tree.root.right.left = new TreeNode(7);
tree.root.right.left.right = new TreeNode(8);
tree.root.left.left = new TreeNode(1);
tree.root.left.right = new TreeNode(3);
tree.root.left.right.left = new TreeNode(9);
tree.root.right.left.right.left = new TreeNode(11);
// Test A
// K = 2
tree.distanceKfromLeft(2);
// Test B
// K = 4
tree.distanceKfromLeft(4);
// Test C
// K = 1
tree.distanceKfromLeft(1);
// Test D
// K = 3
tree.distanceKfromLeft(3);
}
}
Output
Given K 2
5 10 -2 7
Given K 4
10
Given K 1
2 8 -2 3
Given K 3
5 10
// Include header file
#include <iostream>
#include <set>
#include <vector>
using namespace std;
/*
C++ Program
Print all nodes that are at distance k from a leaf node
*/
// Binary Tree node
class TreeNode
{
public: int data;
TreeNode *left;
TreeNode *right;
TreeNode(int data)
{
// Set node value
this->data = data;
this->left = NULL;
this->right = NULL;
}
};
class BinaryTree
{
public: TreeNode *root;
BinaryTree()
{
this->root = NULL;
}
void findResult(TreeNode *node,
set < TreeNode*> &result,
vector < TreeNode *> &path, int k)
{
if (node != NULL)
{
if (node->left == NULL && node->right == NULL)
{
if (path.size() >= k)
{
// Add k distance element
result.insert(path.at(path.size() - k));
}
return;
}
// Add path node
path.push_back(node);
// Visit left and right subtree using recursively
this->findResult(node->left, result, path, k);
this->findResult(node->right, result, path, k);
// Remove last node in path
path.pop_back();
}
}
// Handles the request of finding kth from left node to root
void distanceKfromLeft(int k)
{
if (k < 0)
{
return;
}
// This is used to collect unique result
set < TreeNode *> result;
// This is used to track the path from root to leaf node
vector < TreeNode *> path;
// Find nodes
this->findResult(this->root, result, path, k);
cout << "\n Given K " << k << endl;
if (result.size() == 0)
{
// When result not exists
cout << " No result \n";
}
else
{
// Display calculated result
for (auto &v : result)
{
cout << " " << v->data;
}
}
}
};
int main()
{
BinaryTree *tree = new BinaryTree();
/*
Binary Tree
------------
10
/ \
-2 5
/ \ / \
1 3 7 2
/ \ \
9 8 4
/
11
*/
tree->root = new TreeNode(10);
tree->root->left = new TreeNode(-2);
tree->root->right = new TreeNode(5);
tree->root->right->right = new TreeNode(2);
tree->root->right->right->right = new TreeNode(4);
tree->root->right->left = new TreeNode(7);
tree->root->right->left->right = new TreeNode(8);
tree->root->left->left = new TreeNode(1);
tree->root->left->right = new TreeNode(3);
tree->root->left->right->left = new TreeNode(9);
tree->root->right->left->right->left = new TreeNode(11);
// Test A
// K = 2
tree->distanceKfromLeft(2);
// Test B
// K = 4
tree->distanceKfromLeft(4);
// Test C
// K = 1
tree->distanceKfromLeft(1);
// Test D
// K = 3
tree->distanceKfromLeft(3);
return 0;
}
Output
Given K 2
10 -2 5 7
Given K 4
10
Given K 1
-2 2 8 3
Given K 3
10 5
// Include namespace system
using System;
using System.Collections.Generic;
/*
Csharp Program
Print all nodes that are at distance k from a leaf node
*/
// Binary Tree node
public class TreeNode
{
public int data;
public TreeNode left;
public TreeNode right;
public TreeNode(int data)
{
// Set node value
this.data = data;
this.left = null;
this.right = null;
}
}
public class BinaryTree
{
public TreeNode root;
public BinaryTree()
{
// Set initial value
this.root = null;
}
public void findResult(TreeNode node,
HashSet < TreeNode > result,
List < TreeNode > path, int k)
{
if (node != null)
{
if (node.left == null && node.right == null)
{
if (path.Count >= k)
{
// Add k distance element
result.Add(path[path.Count - k]);
}
return;
}
// Add path node
path.Add(node);
// Visit left and right subtree using recursively
this.findResult(node.left, result, path, k);
this.findResult(node.right, result, path, k);
// Remove last node in path
path.RemoveAt(path.Count - 1);
}
}
// Handles the request of finding kth from left node to root
public void distanceKfromLeft(int k)
{
if (k < 0)
{
return;
}
// This is used to collect unique result
HashSet < TreeNode > result = new HashSet < TreeNode > ();
// This is used to track the path from root to leaf node
List < TreeNode > path = new List < TreeNode > ();
// Find nodes
this.findResult(this.root, result, path, k);
Console.WriteLine("\n Given K " + k);
if (result.Count == 0)
{
// When result not exists
Console.Write(" No result \n");
}
else
{
// Display calculated result
foreach(TreeNode node in result)
{
Console.Write(" " + node.data);
}
}
}
public static void Main(String[] args)
{
BinaryTree tree = new BinaryTree();
/*
Binary Tree
------------
10
/ \
-2 5
/ \ / \
1 3 7 2
/ \ \
9 8 4
/
11
*/
tree.root = new TreeNode(10);
tree.root.left = new TreeNode(-2);
tree.root.right = new TreeNode(5);
tree.root.right.right = new TreeNode(2);
tree.root.right.right.right = new TreeNode(4);
tree.root.right.left = new TreeNode(7);
tree.root.right.left.right = new TreeNode(8);
tree.root.left.left = new TreeNode(1);
tree.root.left.right = new TreeNode(3);
tree.root.left.right.left = new TreeNode(9);
tree.root.right.left.right.left = new TreeNode(11);
// Test A
// K = 2
tree.distanceKfromLeft(2);
// Test B
// K = 4
tree.distanceKfromLeft(4);
// Test C
// K = 1
tree.distanceKfromLeft(1);
// Test D
// K = 3
tree.distanceKfromLeft(3);
}
}
Output
Given K 2
10 -2 7 5
Given K 4
10
Given K 1
-2 3 8 2
Given K 3
10 5
package main
import "fmt"
/*
Go Program
Print all nodes that are at distance k from a leaf node
*/
// Binary Tree node
type TreeNode struct {
data int
left * TreeNode
right * TreeNode
}
func getTreeNode(data int) * TreeNode {
var me *TreeNode = &TreeNode {}
// Set node value
me.data = data
me.left = nil
me.right = nil
return me
}
type BinaryTree struct {
root * TreeNode
}
func getBinaryTree() * BinaryTree {
var me *BinaryTree = &BinaryTree {}
// Set initial value
me.root = nil
return me
}
func(this BinaryTree) findResult(node * TreeNode,
result map[*TreeNode] bool, path [] *TreeNode , k int) {
if node != nil {
if node.left == nil && node.right == nil {
if len(path) >= k {
// Add k distance element
result[path[len(path) - k]] = true
}
return
}
// Add path node
path = append(path, node)
// Visit left and right subtree using recursively
this.findResult(node.left, result, path, k)
this.findResult(node.right, result, path, k)
// Remove last node in path
path = append(path[: len(path) - 1], path[len(path) - 1 + 1: ]...)
}
}
// Handles the request of finding kth from left node to root
func(this BinaryTree) distanceKfromLeft(k int) {
if k < 0 {
return
}
// This is used to collect unique result
var result = make(map[*TreeNode] bool)
// This is used to track the path from root to leaf node
var path = make([] *TreeNode, 0)
// Find nodes
this.findResult(this.root, result, path, k)
fmt.Println("\n Given K ", k)
if len(result) == 0 {
// When result not exists
fmt.Print(" No result \n")
} else {
// Display calculated result
for node := range result {
fmt.Print(" ", node.data)
}
}
}
func main() {
var tree * BinaryTree = getBinaryTree()
/*
Binary Tree
------------
10
/ \
-2 5
/ \ / \
1 3 7 2
/ \ \
9 8 4
/
11
*/
tree.root = getTreeNode(10)
tree.root.left = getTreeNode(-2)
tree.root.right = getTreeNode(5)
tree.root.right.right = getTreeNode(2)
tree.root.right.right.right = getTreeNode(4)
tree.root.right.left = getTreeNode(7)
tree.root.right.left.right = getTreeNode(8)
tree.root.left.left = getTreeNode(1)
tree.root.left.right = getTreeNode(3)
tree.root.left.right.left = getTreeNode(9)
tree.root.right.left.right.left = getTreeNode(11)
// Test A
// K = 2
tree.distanceKfromLeft(2)
// Test B
// K = 4
tree.distanceKfromLeft(4)
// Test C
// K = 1
tree.distanceKfromLeft(1)
// Test D
// K = 3
tree.distanceKfromLeft(3)
}
Output
Given K 2
10 -2 7 5
Given K 4
10
Given K 1
-2 3 8 2
Given K 3
10 5
<?php
/*
Php Program
Print all nodes that are at distance k from a leaf node
*/
// Binary Tree node
class TreeNode
{
public $data;
public $left;
public $right;
public function __construct($data)
{
// Set node value
$this->data = $data;
$this->left = NULL;
$this->right = NULL;
}
}
class BinaryTree
{
public $root;
public function __construct()
{
$this->root = NULL;
}
public function findResult($node, &$result, &$path, $k)
{
if ($node != NULL)
{
if ($node->left == NULL && $node->right == NULL)
{
if (count($path) >= $k)
{
// Add k distance element
if (in_array($path[count($path) - $k], $result) == False)
{
$result[] = $path[count($path) - $k];
}
}
return;
}
// Add path node
$path[] = $node;
// Visit left and right subtree using recursively
$this->findResult($node->left, $result, $path, $k);
$this->findResult($node->right, $result, $path, $k);
// Remove last node in path
array_pop($path);
}
}
// Handles the request of finding kth from left node to root
public function distanceKfromLeft($k)
{
if ($k < 0)
{
return;
}
// This is used to collect unique result
$result = array();
// This is used to track the path from root to leaf node
$path = array();
// Find nodes
$this->findResult($this->root, $result, $path, $k);
echo("\n Given K ".$k.
"\n");
if (count($result) == 0)
{
// When result not exists
echo(" No result \n");
}
else
{
// Display calculated result
foreach($result as $p => $node)
{
echo(" ".$node->data);
}
}
}
}
function main()
{
$tree = new BinaryTree();
/*
Binary Tree
------------
10
/ \
-2 5
/ \ / \
1 3 7 2
/ \ \
9 8 4
/
11
*/
$tree->root = new TreeNode(10);
$tree->root->left = new TreeNode(-2);
$tree->root->right = new TreeNode(5);
$tree->root->right->right = new TreeNode(2);
$tree->root->right->right->right = new TreeNode(4);
$tree->root->right->left = new TreeNode(7);
$tree->root->right->left->right = new TreeNode(8);
$tree->root->left->left = new TreeNode(1);
$tree->root->left->right = new TreeNode(3);
$tree->root->left->right->left = new TreeNode(9);
$tree->root->right->left->right->left = new TreeNode(11);
// Test A
// K = 2
$tree->distanceKfromLeft(2);
// Test B
// K = 4
$tree->distanceKfromLeft(4);
// Test C
// K = 1
$tree->distanceKfromLeft(1);
// Test D
// K = 3
$tree->distanceKfromLeft(3);
}
main();
Output
Given K 2
10 -2 7 5
Given K 4
10
Given K 1
-2 3 8 2
Given K 3
10 5
/*
Node JS Program
Print all nodes that are at distance k from a leaf node
*/
// Binary Tree node
class TreeNode
{
constructor(data)
{
// Set node value
this.data = data;
this.left = null;
this.right = null;
}
}
class BinaryTree
{
constructor()
{
this.root = null;
}
findResult(node, result, path, k)
{
if (node != null)
{
if (node.left == null && node.right == null)
{
if (path.length >= k)
{
// Add k distance element
result.add(path[path.length - k]);
}
return;
}
// Add path node
path.push(node);
// Visit left and right subtree using recursively
this.findResult(node.left, result, path, k);
this.findResult(node.right, result, path, k);
// Remove last node in path
path.pop();
}
}
// Handles the request of finding kth from left node to root
distanceKfromLeft(k)
{
if (k < 0)
{
return;
}
// This is used to collect unique result
var result = new Set();
// This is used to track the path from root to leaf node
var path = [];
// Find nodes
this.findResult(this.root, result, path, k);
console.log("\n Given K " + k);
if (result.size == 0)
{
// When result not exists
process.stdout.write(" No result \n");
}
else
{
// Display calculated result
for (let node of result)
{
process.stdout.write(" " + node.data);
}
}
}
}
function main()
{
var tree = new BinaryTree();
/*
Binary Tree
------------
10
/ \
-2 5
/ \ / \
1 3 7 2
/ \ \
9 8 4
/
11
*/
tree.root = new TreeNode(10);
tree.root.left = new TreeNode(-2);
tree.root.right = new TreeNode(5);
tree.root.right.right = new TreeNode(2);
tree.root.right.right.right = new TreeNode(4);
tree.root.right.left = new TreeNode(7);
tree.root.right.left.right = new TreeNode(8);
tree.root.left.left = new TreeNode(1);
tree.root.left.right = new TreeNode(3);
tree.root.left.right.left = new TreeNode(9);
tree.root.right.left.right.left = new TreeNode(11);
// Test A
// K = 2
tree.distanceKfromLeft(2);
// Test B
// K = 4
tree.distanceKfromLeft(4);
// Test C
// K = 1
tree.distanceKfromLeft(1);
// Test D
// K = 3
tree.distanceKfromLeft(3);
}
main();
Output
Given K 2
10 -2 7 5
Given K 4
10
Given K 1
-2 3 8 2
Given K 3
10 5
# Python 3 Program
# Print all nodes that are at distance k from a leaf node
# Binary Tree node
class TreeNode :
def __init__(self, data) :
# Set node value
self.data = data
self.left = None
self.right = None
class BinaryTree :
def __init__(self) :
self.root = None
def findResult(self, node, result, path, k) :
if (node != None) :
if (node.left == None and node.right == None) :
if (len(path) >= k) :
# Add k distance element
result.add(path[len(path) - k])
return
# Add path node
path.append(node)
# Visit left and right subtree using recursively
self.findResult(node.left, result, path, k)
self.findResult(node.right, result, path, k)
# Remove last node in path
del path[len(path) - 1]
# Handles the request of finding kth from left node to root
def distanceKfromLeft(self, k) :
if (k < 0) :
return
# This is used to collect unique result
result = set()
# This is used to track the path from root to leaf node
path = []
# Find nodes
self.findResult(self.root, result, path, k)
print("\n Given K ", k)
if (len(result) == 0) :
# When result not exists
print(" No result ")
else :
for node in result :
print(" ", node.data, end = "")
def main() :
tree = BinaryTree()
# Binary Tree
# ------------
# 10
# / \
# -2 5
# / \ / \
# 1 3 7 2
# / \ \
# 9 8 4
# /
# 11
tree.root = TreeNode(10)
tree.root.left = TreeNode(-2)
tree.root.right = TreeNode(5)
tree.root.right.right = TreeNode(2)
tree.root.right.right.right = TreeNode(4)
tree.root.right.left = TreeNode(7)
tree.root.right.left.right = TreeNode(8)
tree.root.left.left = TreeNode(1)
tree.root.left.right = TreeNode(3)
tree.root.left.right.left = TreeNode(9)
tree.root.right.left.right.left = TreeNode(11)
# Test A
# K = 2
tree.distanceKfromLeft(2)
# Test B
# K = 4
tree.distanceKfromLeft(4)
# Test C
# K = 1
tree.distanceKfromLeft(1)
# Test D
# K = 3
tree.distanceKfromLeft(3)
if __name__ == "__main__": main()
Output
Given K 2
5 10 7 -2
Given K 4
10
Given K 1
3 8 2 -2
Given K 3
5 10
# Ruby Program
# Print all nodes that are at distance k from a leaf node
# Binary Tree node
class TreeNode
# Define the accessor and reader of class TreeNode
attr_reader :data, :left, :right
attr_accessor :data, :left, :right
def initialize(data)
# Set node value
self.data = data
self.left = nil
self.right = nil
end
end
class BinaryTree
# Define the accessor and reader of class BinaryTree
attr_reader :root
attr_accessor :root
def initialize()
self.root = nil
end
def findResult(node, result, path, k)
if (node != nil)
if (node.left == nil && node.right == nil)
if (path.length >= k )
result.delete(path[path.length - k])
# Add k distance element
result.push(path[path.length - k])
end
return
end
# Add path node
path.push(node)
# Visit left and right subtree using recursively
self.findResult(node.left, result, path, k)
self.findResult(node.right, result, path, k)
# Remove last node in path
path.delete_at(path.length - 1)
end
end
# Handles the request of finding kth from left node to root
def distanceKfromLeft(k)
if (k < 0)
return
end
# This is used to collect unique result
result = []
# This is used to track the path from root to leaf node
path = []
# Find nodes
self.findResult(self.root, result, path, k)
print("\n Given K ", k, "\n")
if (result.size() == 0)
# When result not exists
print(" No result \n")
else
# Display calculated result
result.each do | node |
print(" ", node.data)
end
end
end
end
def main()
tree = BinaryTree.new()
# Binary Tree
# ------------
# 10
# / \
# -2 5
# / \ / \
# 1 3 7 2
# / \ \
# 9 8 4
# /
# 11
tree.root = TreeNode.new(10)
tree.root.left = TreeNode.new(-2)
tree.root.right = TreeNode.new(5)
tree.root.right.right = TreeNode.new(2)
tree.root.right.right.right = TreeNode.new(4)
tree.root.right.left = TreeNode.new(7)
tree.root.right.left.right = TreeNode.new(8)
tree.root.left.left = TreeNode.new(1)
tree.root.left.right = TreeNode.new(3)
tree.root.left.right.left = TreeNode.new(9)
tree.root.right.left.right.left = TreeNode.new(11)
# Test A
# K = 2
tree.distanceKfromLeft(2)
# Test B
# K = 4
tree.distanceKfromLeft(4)
# Test C
# K = 1
tree.distanceKfromLeft(1)
# Test D
# K = 3
tree.distanceKfromLeft(3)
end
main()
Output
Given K 2
10 -2 7 5
Given K 4
10
Given K 1
-2 3 8 2
Given K 3
5 10
import scala.collection.mutable._;
/*
Scala Program
Print all nodes that are at distance k from a leaf node
*/
// Binary Tree node
class TreeNode(var data: Int,
var left: TreeNode,
var right: TreeNode)
{
def this(data: Int)
{
// Set node value
this(data, null, null)
}
}
class BinaryTree(var root: TreeNode)
{
def this()
{
this(null)
}
def findResult(
node: TreeNode,
result: Set[TreeNode],
path: ArrayBuffer[TreeNode],
k: Int): Unit = {
if (node != null)
{
if (node.left == null && node.right == null)
{
if (path.size >= k)
{
// Add k distance element
result.add(path(path.size - k));
}
return;
}
// Add path node
path += node;
// Visit left and right subtree using recursively
findResult(node.left, result, path, k);
findResult(node.right, result, path, k);
// Remove last node in path
path.remove(path.size - 1);
}
}
// Handles the request of finding kth from left node to root
def distanceKfromLeft(k: Int): Unit = {
if (k < 0)
{
return;
}
// This is used to collect unique result
var result: Set[TreeNode] = Set();
// This is used to track the path from root to leaf node
var path: ArrayBuffer[TreeNode] =
new ArrayBuffer[TreeNode]();
// Find nodes
findResult(this.root, result, path, k);
println("\n Given K " + k);
if (result.size == 0)
{
// When result not exists
print(" No result \n");
}
else
{
// Display calculated result
for ((node) <- result)
{
print(" " + node.data);
}
}
}
}
object Main
{
def main(args: Array[String]): Unit = {
var tree: BinaryTree = new BinaryTree();
/*
Binary Tree
------------
10
/ \
-2 5
/ \ / \
1 3 7 2
/ \ \
9 8 4
/
11
*/
tree.root = new TreeNode(10);
tree.root.left = new TreeNode(-2);
tree.root.right = new TreeNode(5);
tree.root.right.right = new TreeNode(2);
tree.root.right.right.right = new TreeNode(4);
tree.root.right.left = new TreeNode(7);
tree.root.right.left.right = new TreeNode(8);
tree.root.left.left = new TreeNode(1);
tree.root.left.right = new TreeNode(3);
tree.root.left.right.left = new TreeNode(9);
tree.root.right.left.right.left = new TreeNode(11);
// Test A
// K = 2
tree.distanceKfromLeft(2);
// Test B
// K = 4
tree.distanceKfromLeft(4);
// Test C
// K = 1
tree.distanceKfromLeft(1);
// Test D
// K = 3
tree.distanceKfromLeft(3);
}
}
Output
Given K 2
7 10 -2 5
Given K 4
10
Given K 1
3 -2 2 8
Given K 3
10 5
/*
Kotlin Program
Print all nodes that are at distance k from a leaf node
*/
// 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 ? ;
constructor()
{
this.root = null;
}
fun findResult(node: TreeNode ? ,
result : MutableSet< TreeNode > ,
path : MutableList < TreeNode > , k : Int): Unit
{
if (node != null)
{
if (node.left == null && node.right == null)
{
if (path.size >= k)
{
// Add k distance element
result.add(path[path.size - k]);
}
return;
}
// Add path node
path.add(node);
// Visit left and right subtree using recursively
this.findResult(node.left, result, path, k);
this.findResult(node.right, result, path, k);
// Remove last node in path
path.removeAt(path.size - 1);
}
}
// Handles the request of finding kth from left node to root
fun distanceKfromLeft(k: Int): Unit
{
if (k < 0)
{
return;
}
// This is used to collect unique result
val result: MutableSet< TreeNode > = mutableSetOf< TreeNode > ();
// This is used to track the path from root to leaf node
val path: MutableList < TreeNode > = mutableListOf < TreeNode > ();
// Find nodes
this.findResult(this.root, result, path, k);
println("\n Given K " + k);
if (result.count() == 0)
{
// When result not exists
print(" No result \n");
}
else
{
// Display calculated result
for (node in result)
{
print(" " + node.data);
}
}
}
}
fun main(args: Array < String > ): Unit
{
val tree: BinaryTree = BinaryTree();
/*
Binary Tree
------------
10
/ \
-2 5
/ \ / \
1 3 7 2
/ \ \
9 8 4
/
11
*/
tree.root = TreeNode(10);
tree.root?.left = TreeNode(-2);
tree.root?.right = TreeNode(5);
tree.root?.right?.right = TreeNode(2);
tree.root?.right?.right?.right = TreeNode(4);
tree.root?.right?.left = TreeNode(7);
tree.root?.right?.left?.right = TreeNode(8);
tree.root?.left?.left = TreeNode(1);
tree.root?.left?.right = TreeNode(3);
tree.root?.left?.right?.left = TreeNode(9);
tree.root?.right?.left?.right?.left = TreeNode(11);
// Test A
// K = 2
tree.distanceKfromLeft(2);
// Test B
// K = 4
tree.distanceKfromLeft(4);
// Test C
// K = 1
tree.distanceKfromLeft(1);
// Test D
// K = 3
tree.distanceKfromLeft(3);
}
Output
Given K 2
10 -2 7 5
Given K 4
10
Given K 1
-2 3 8 2
Given K 3
10 5
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.
New Comment