Skip to content

Commit 286d2dc

Browse files
committed
add level order traversal code
1 parent 5951b65 commit 286d2dc

9 files changed

+211
-0
lines changed

patterns/c#/LevelOrderTraversal.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
public class TreeNode {
5+
public int val;
6+
public TreeNode left;
7+
public TreeNode right;
8+
9+
public TreeNode(int x) {
10+
val = x;
11+
}
12+
}
13+
14+
public class LevelOrderTraversal {
15+
public void LevelOrder(TreeNode root) {
16+
if (root == null) return;
17+
18+
Queue<TreeNode> queue = new Queue<TreeNode>();
19+
queue.Enqueue(root);
20+
21+
while (queue.Count > 0) {
22+
TreeNode node = queue.Dequeue();
23+
Console.Write(node.val + " "); // Process the node by printing its value
24+
25+
// Add the left and right children to the queue, if they exist
26+
if (node.left != null) queue.Enqueue(node.left);
27+
if (node.right != null) queue.Enqueue(node.right);
28+
}
29+
}
30+
}

patterns/c++/LevelOrderTraversal.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#include <iostream>
2+
#include <queue>
3+
using namespace std;
4+
5+
// Definition for a binary tree node.
6+
struct TreeNode {
7+
int val;
8+
TreeNode* left;
9+
TreeNode* right;
10+
11+
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
12+
};
13+
14+
class LevelOrderTraversal {
15+
public:
16+
void levelOrder(TreeNode* root) {
17+
if (root == nullptr) return;
18+
19+
queue<TreeNode*> q;
20+
q.push(root);
21+
22+
while (!q.empty()) {
23+
TreeNode* node = q.front();
24+
q.pop();
25+
cout << node->val << " "; // Process the node by printing its value
26+
27+
// Add the left and right children to the queue, if they exist
28+
if (node->left != nullptr) q.push(node->left);
29+
if (node->right != nullptr) q.push(node->right);
30+
}
31+
}
32+
};

patterns/go/level_order_traversal.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package main
2+
3+
import "fmt"
4+
5+
// Definition for a binary tree node.
6+
type TreeNode struct {
7+
Val int
8+
Left *TreeNode
9+
Right *TreeNode
10+
}
11+
12+
func levelOrder(root *TreeNode) {
13+
if root == nil {
14+
return
15+
}
16+
17+
queue := []*TreeNode{root}
18+
19+
for len(queue) > 0 {
20+
node := queue[0]
21+
queue = queue[1:]
22+
fmt.Print(node.Val, " ") // Process the node by printing its value
23+
24+
// Add the left and right children to the queue, if they exist
25+
if node.Left != nil {
26+
queue = append(queue, node.Left)
27+
}
28+
if node.Right != nil {
29+
queue = append(queue, node.Right)
30+
}
31+
}
32+
33+
func main() {
34+
// Example usage
35+
root := &TreeNode{Val: 1}
36+
root.Left = &TreeNode{Val: 2}
37+
root.Right = &TreeNode{Val: 3}
38+
levelOrder(root) // Output: 1 2 3
39+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package patterns.java;
2+
3+
import java.util.LinkedList;
4+
import java.util.Queue;
5+
6+
// Definition for a binary tree node.
7+
class TreeNode {
8+
int val;
9+
TreeNode left;
10+
TreeNode right;
11+
12+
TreeNode(int x) {
13+
val = x;
14+
}
15+
}
16+
17+
public class LevelOrderTraversal {
18+
public void levelOrder(TreeNode root) {
19+
if (root == null) return;
20+
21+
Queue<TreeNode> queue = new LinkedList<>();
22+
queue.add(root);
23+
24+
while (!queue.isEmpty()) {
25+
TreeNode node = queue.poll();
26+
System.out.print(node.val + " "); // Process the node by printing its value
27+
28+
// Add the left and right children to the queue, if they exist
29+
if (node.left != null) queue.add(node.left);
30+
if (node.right != null) queue.add(node.right);
31+
}
32+
}
33+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Definition for a binary tree node.
2+
class TreeNode {
3+
constructor(val) {
4+
this.val = val;
5+
this.left = this.right = null;
6+
}
7+
}
8+
9+
class LevelOrderTraversal {
10+
levelOrder(root) {
11+
if (root === null) return;
12+
13+
const queue = [root];
14+
15+
while (queue.length > 0) {
16+
const node = queue.shift();
17+
console.log(node.val); // Process the node by printing its value
18+
19+
// Add the left and right children to the queue, if they exist
20+
if (node.left !== null) queue.push(node.left);
21+
if (node.right !== null) queue.push(node.right);
22+
}
23+
}
24+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from collections import deque
2+
3+
# Definition for a binary tree node.
4+
class TreeNode:
5+
def __init__(self, x):
6+
self.val = x
7+
self.left = None
8+
self.right = None
9+
10+
class LevelOrderTraversal:
11+
def level_order(self, root):
12+
if root is None:
13+
return
14+
15+
queue = deque([root])
16+
17+
while queue:
18+
node = queue.popleft()
19+
print(node.val, end=" ") # Process the node by printing its value
20+
21+
# Add the left and right children to the queue, if they exist
22+
if node.left:
23+
queue.append(node.left)
24+
if node.right:
25+
queue.append(node.right)
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Definition for a binary tree node.
2+
class BinaryTreeNode {
3+
val: number;
4+
left: TreeNode | null;
5+
right: TreeNode | null;
6+
7+
constructor(val: number) {
8+
this.val = val;
9+
this.left = this.right = null;
10+
}
11+
}
12+
13+
class BinaryTreeLevelOrderTraversal {
14+
levelOrder(root: BinaryTreeNode | null): void {
15+
if (root === null) return;
16+
17+
const queue: BinaryTreeNode[] = [root];
18+
19+
while (queue.length > 0) {
20+
const node = queue.shift()!;
21+
console.log(node.val); // Process the node by printing its value
22+
23+
// Add the left and right children to the queue, if they exist
24+
if (node.left !== null) queue.push(node.left);
25+
if (node.right !== null) queue.push(node.right);
26+
}
27+
}
28+
}

0 commit comments

Comments
 (0)