Skip to content

Commit 6b99a52

Browse files
Create diameterOfBinaryTree.test.js
1 parent 1edfc56 commit 6b99a52

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { diameterOfBinaryTree } from './diameterOfBinaryTree';
2+
import { TreeNode } from '../utils/TreeNode';
3+
4+
describe('Diameter of a Binary Tree', () => {
5+
it('should calculate the correct diameter for a standard tree', () => {
6+
// 1
7+
// / \
8+
// 2 3
9+
// / \
10+
// 4 5
11+
// Longest path is 4 -> 2 -> 1 -> 3 (length 3) or 5 -> 2 -> 1 -> 3 (length 3)
12+
const root = new TreeNode(1);
13+
root.left = new TreeNode(2);
14+
root.right = new TreeNode(3);
15+
root.left.left = new TreeNode(4);
16+
root.left.right = new TreeNode(5);
17+
expect(diameterOfBinaryTree(root)).toBe(3);
18+
});
19+
20+
it('should work for a skewed tree where diameter does not pass through root', () => {
21+
// 1
22+
// /
23+
// 2
24+
// / \
25+
// 3 4
26+
// / \
27+
// 5 6
28+
// / \
29+
// 7 8
30+
// Longest path is 7 -> 5 -> 4 -> 6 -> 8 (length 4)
31+
const root = new TreeNode(1);
32+
root.left = new TreeNode(2);
33+
root.left.left = new TreeNode(3);
34+
root.left.right = new TreeNode(4);
35+
root.left.right.left = new TreeNode(5);
36+
root.left.right.right = new TreeNode(6);
37+
root.left.right.left.left = new TreeNode(7);
38+
root.left.right.right.right = new TreeNode(8);
39+
expect(diameterOfBinaryTree(root)).toBe(6);
40+
});
41+
42+
it('should return 0 for a null or single-node tree', () => {
43+
expect(diameterOfBinaryTree(null)).toBe(0);
44+
const singleNode = new TreeNode(1);
45+
expect(diameterOfBinaryTree(singleNode)).toBe(0);
46+
});
47+
});

0 commit comments

Comments
 (0)