Skip to content

Commit b6fd6ff

Browse files
committed
print path for a given node to leaf
1 parent 4099f31 commit b6fd6ff

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
'use strict';
2+
class Node {
3+
constructor(data) {
4+
this.data = data;
5+
this.leftNode = this.rightNode = null;
6+
}
7+
}
8+
9+
function printPathToNode(root, pathArr, pathIndex, nodeData) {
10+
if (root == null) return;
11+
pathArr[pathIndex++] = (root.data);
12+
if (root.data == nodeData) {
13+
let pathStr = '';
14+
for (let index = 0; index < pathIndex; index++) {
15+
pathStr = pathStr + pathArr[index] + ' ';
16+
}
17+
console.log(pathStr);
18+
return;
19+
}
20+
else {
21+
printPathToNode(root.leftNode, pathArr, pathIndex, nodeData);
22+
printPathToNode(root.rightNode, pathArr, pathIndex, nodeData);
23+
}
24+
}
25+
26+
//level - 1
27+
let tree = new Node(1);
28+
29+
// level - 2
30+
tree.leftNode = new Node(2);
31+
tree.rightNode = new Node(3);
32+
33+
// level -3
34+
tree.leftNode.leftNode = new Node(4);
35+
tree.leftNode.rightNode = new Node(5);
36+
37+
tree.rightNode.leftNode = new Node(6);
38+
tree.rightNode.rightNode = new Node(7);
39+
40+
// level - 4
41+
tree.leftNode.leftNode.rightNode = new Node(8);
42+
tree.rightNode.rightNode.leftNode = new Node(10);
43+
44+
// Tree
45+
// 1
46+
// / \
47+
// 2 3
48+
// / \ / \
49+
// 4 5 6 7
50+
// \ /
51+
// 8 10
52+
let data = 10;
53+
printPathToNode(tree, [], 0, data);

0 commit comments

Comments
 (0)